From bc041b0c5e9ac2cc3659d3571913abf74ff2723f Mon Sep 17 00:00:00 2001 From: Rinaldus Date: Wed, 1 Feb 2017 18:39:24 +0300 Subject: [PATCH] initial build --- mod.lua | 28 + res/models/model/vehicle/bus/aboag.mdl | 170 +++ res/models/model/vehicle/bus/benz_o6600.mdl | 212 ++++ .../model/vehicle/bus/berkhof_duvedec.mdl | 227 ++++ res/models/model/vehicle/bus/et13.mdl | 339 +++++ res/models/model/vehicle/bus/landauer.mdl | 459 +++++++ res/models/model/vehicle/bus/man_sl_192.mdl | 519 ++++++++ res/models/model/vehicle/bus/obeissante.mdl | 177 +++ res/models/model/vehicle/bus/postkutsche.mdl | 200 +++ .../model/vehicle/bus/saurer_tuescher.mdl | 211 ++++ res/models/model/vehicle/bus/volvo_5000.mdl | 479 +++++++ .../model/vehicle/plane/airbus_a320.mdl | 530 ++++++++ res/models/model/vehicle/plane/boeing_737.mdl | 434 +++++++ res/models/model/vehicle/plane/boeing_757.mdl | 551 ++++++++ res/models/model/vehicle/plane/comet_4b.mdl | 428 +++++++ res/models/model/vehicle/plane/concorde.mdl | 527 ++++++++ .../model/vehicle/plane/dornier_b_merkur.mdl | 223 ++++ .../model/vehicle/plane/douglas_dc3.mdl | 312 +++++ .../model/vehicle/plane/douglas_dc4.mdl | 464 +++++++ .../model/vehicle/plane/junkers_f_13.mdl | 219 ++++ .../model/vehicle/plane/super_connie.mdl | 545 ++++++++ res/models/model/vehicle/train/a3_5_705.mdl | 129 ++ res/models/model/vehicle/train/ae_4_7.mdl | 273 ++++ .../model/vehicle/train/borsig_1860.mdl | 122 ++ .../model/vehicle/train/br53_preus_g3.mdl | 140 +++ res/models/model/vehicle/train/br75_4.mdl | 364 ++++++ res/models/model/vehicle/train/br89.mdl | 203 +++ res/models/model/vehicle/train/br_103_1.mdl | 137 ++ .../model/vehicle/train/br_185_traxx.mdl | 132 ++ res/models/model/vehicle/train/br_218.mdl | 158 +++ .../model/vehicle/train/br_246_traxx.mdl | 147 +++ res/models/model/vehicle/train/br_e94.mdl | 126 ++ res/models/model/vehicle/train/c6_8.mdl | 133 ++ res/models/model/vehicle/train/d1_3_new.mdl | 127 ++ res/models/model/vehicle/train/db_v100.mdl | 229 ++++ .../model/vehicle/train/lner_class_a4.mdl | 373 ++++++ .../vehicle/train/lner_flying_scotsman.mdl | 149 +++ res/models/model/vehicle/train/nohab.mdl | 149 +++ res/models/model/vehicle/train/obb_1042.mdl | 111 ++ res/models/model/vehicle/train/plm_220.mdl | 124 ++ .../model/vehicle/train/rabde_12_12_front.mdl | 367 ++++++ .../vehicle/train/rabde_12_12_waggon.mdl | 345 +++++ res/models/model/vehicle/train/re_44i.mdl | 235 ++++ res/models/model/vehicle/train/re_450.mdl | 229 ++++ res/models/model/vehicle/train/re_450_b.mdl | 410 ++++++ res/models/model/vehicle/train/re_450_bt.mdl | 390 ++++++ res/models/model/vehicle/train/roterpfeil.mdl | 258 ++++ .../model/vehicle/train/schienenbus.mdl | 388 ++++++ res/models/model/vehicle/train/tgv.mdl | 135 ++ res/models/model/vehicle/train/tgv_w1.mdl | 370 ++++++ res/models/model/vehicle/train/tgv_w2.mdl | 379 ++++++ res/models/model/vehicle/train/twindexx.mdl | 511 ++++++++ .../model/vehicle/train/twindexx_w1.mdl | 551 ++++++++ res/models/model/vehicle/tram/be4_6mirage.mdl | 324 +++++ res/models/model/vehicle/tram/be5_6.mdl | 394 ++++++ res/models/model/vehicle/tram/dampftram.mdl | 133 ++ res/models/model/vehicle/tram/halle.mdl | 219 ++++ res/models/model/vehicle/tram/schst.mdl | 166 +++ .../model/vehicle/tram/strassenbahn1850.mdl | 132 ++ res/models/model/vehicle/tram/typ1.mdl | 160 +++ res/models/model/vehicle/truck/40_tons.mdl | 271 ++++ .../model/vehicle/truck/benz1912_lkw.mdl | 261 ++++ .../model/vehicle/truck/dmg_cannstatt.mdl | 255 ++++ res/models/model/vehicle/truck/horse_cart.mdl | 353 ++++++ .../model/vehicle/truck/horsewagon_1850.mdl | 158 +++ .../model/vehicle/truck/man_19_304_1970.mdl | 298 +++++ .../model/vehicle/truck/opel_blitz_1930.mdl | 255 ++++ .../model/vehicle/waggon/3axes_person.mdl | 473 +++++++ res/models/model/vehicle/waggon/bc4.mdl | 356 ++++++ .../model/vehicle/waggon/compartment_car.mdl | 779 ++++++++++++ .../model/vehicle/waggon/d1_spanischb.mdl | 322 +++++ .../model/vehicle/waggon/donnerbuechse.mdl | 343 +++++ res/models/model/vehicle/waggon/ew_ii.mdl | 312 +++++ res/models/model/vehicle/waggon/ew_iv.mdl | 326 +++++ .../model/vehicle/waggon/goods_1850_v2.mdl | 192 +++ res/models/model/vehicle/waggon/hbi1_v2.mdl | 185 +++ .../model/vehicle/waggon/kesselwagen_1860.mdl | 189 +++ .../model/vehicle/waggon/kesselwagen_1910.mdl | 189 +++ .../model/vehicle/waggon/kesselwagen_1950.mdl | 263 ++++ res/models/model/vehicle/waggon/open_1850.mdl | 296 +++++ res/models/model/vehicle/waggon/open_1910.mdl | 296 +++++ res/models/model/vehicle/waggon/open_1975.mdl | 295 +++++ .../model/vehicle/waggon/rungenwagen_1850.mdl | 731 +++++++++++ .../model/vehicle/waggon/rungenwagen_1890.mdl | 1107 +++++++++++++++++ .../model/vehicle/waggon/rungenwagen_1950.mdl | 783 ++++++++++++ .../model/vehicle/waggon/verbandswagen_v2.mdl | 191 +++ .../vehicle/waggon/wagen_bayrisch_1865.mdl | 351 ++++++ workshop_preview.jpg | Bin 0 -> 110273 bytes 88 files changed, 26506 insertions(+) create mode 100755 mod.lua create mode 100755 res/models/model/vehicle/bus/aboag.mdl create mode 100755 res/models/model/vehicle/bus/benz_o6600.mdl create mode 100755 res/models/model/vehicle/bus/berkhof_duvedec.mdl create mode 100755 res/models/model/vehicle/bus/et13.mdl create mode 100755 res/models/model/vehicle/bus/landauer.mdl create mode 100755 res/models/model/vehicle/bus/man_sl_192.mdl create mode 100755 res/models/model/vehicle/bus/obeissante.mdl create mode 100755 res/models/model/vehicle/bus/postkutsche.mdl create mode 100755 res/models/model/vehicle/bus/saurer_tuescher.mdl create mode 100755 res/models/model/vehicle/bus/volvo_5000.mdl create mode 100755 res/models/model/vehicle/plane/airbus_a320.mdl create mode 100755 res/models/model/vehicle/plane/boeing_737.mdl create mode 100755 res/models/model/vehicle/plane/boeing_757.mdl create mode 100755 res/models/model/vehicle/plane/comet_4b.mdl create mode 100755 res/models/model/vehicle/plane/concorde.mdl create mode 100755 res/models/model/vehicle/plane/dornier_b_merkur.mdl create mode 100755 res/models/model/vehicle/plane/douglas_dc3.mdl create mode 100755 res/models/model/vehicle/plane/douglas_dc4.mdl create mode 100755 res/models/model/vehicle/plane/junkers_f_13.mdl create mode 100755 res/models/model/vehicle/plane/super_connie.mdl create mode 100755 res/models/model/vehicle/train/a3_5_705.mdl create mode 100755 res/models/model/vehicle/train/ae_4_7.mdl create mode 100755 res/models/model/vehicle/train/borsig_1860.mdl create mode 100755 res/models/model/vehicle/train/br53_preus_g3.mdl create mode 100755 res/models/model/vehicle/train/br75_4.mdl create mode 100755 res/models/model/vehicle/train/br89.mdl create mode 100755 res/models/model/vehicle/train/br_103_1.mdl create mode 100755 res/models/model/vehicle/train/br_185_traxx.mdl create mode 100755 res/models/model/vehicle/train/br_218.mdl create mode 100755 res/models/model/vehicle/train/br_246_traxx.mdl create mode 100755 res/models/model/vehicle/train/br_e94.mdl create mode 100755 res/models/model/vehicle/train/c6_8.mdl create mode 100755 res/models/model/vehicle/train/d1_3_new.mdl create mode 100755 res/models/model/vehicle/train/db_v100.mdl create mode 100755 res/models/model/vehicle/train/lner_class_a4.mdl create mode 100755 res/models/model/vehicle/train/lner_flying_scotsman.mdl create mode 100755 res/models/model/vehicle/train/nohab.mdl create mode 100755 res/models/model/vehicle/train/obb_1042.mdl create mode 100755 res/models/model/vehicle/train/plm_220.mdl create mode 100755 res/models/model/vehicle/train/rabde_12_12_front.mdl create mode 100755 res/models/model/vehicle/train/rabde_12_12_waggon.mdl create mode 100755 res/models/model/vehicle/train/re_44i.mdl create mode 100755 res/models/model/vehicle/train/re_450.mdl create mode 100755 res/models/model/vehicle/train/re_450_b.mdl create mode 100755 res/models/model/vehicle/train/re_450_bt.mdl create mode 100755 res/models/model/vehicle/train/roterpfeil.mdl create mode 100755 res/models/model/vehicle/train/schienenbus.mdl create mode 100755 res/models/model/vehicle/train/tgv.mdl create mode 100755 res/models/model/vehicle/train/tgv_w1.mdl create mode 100755 res/models/model/vehicle/train/tgv_w2.mdl create mode 100755 res/models/model/vehicle/train/twindexx.mdl create mode 100755 res/models/model/vehicle/train/twindexx_w1.mdl create mode 100755 res/models/model/vehicle/tram/be4_6mirage.mdl create mode 100755 res/models/model/vehicle/tram/be5_6.mdl create mode 100755 res/models/model/vehicle/tram/dampftram.mdl create mode 100755 res/models/model/vehicle/tram/halle.mdl create mode 100755 res/models/model/vehicle/tram/schst.mdl create mode 100755 res/models/model/vehicle/tram/strassenbahn1850.mdl create mode 100755 res/models/model/vehicle/tram/typ1.mdl create mode 100755 res/models/model/vehicle/truck/40_tons.mdl create mode 100755 res/models/model/vehicle/truck/benz1912_lkw.mdl create mode 100755 res/models/model/vehicle/truck/dmg_cannstatt.mdl create mode 100755 res/models/model/vehicle/truck/horse_cart.mdl create mode 100755 res/models/model/vehicle/truck/horsewagon_1850.mdl create mode 100755 res/models/model/vehicle/truck/man_19_304_1970.mdl create mode 100755 res/models/model/vehicle/truck/opel_blitz_1930.mdl create mode 100755 res/models/model/vehicle/waggon/3axes_person.mdl create mode 100755 res/models/model/vehicle/waggon/bc4.mdl create mode 100755 res/models/model/vehicle/waggon/compartment_car.mdl create mode 100755 res/models/model/vehicle/waggon/d1_spanischb.mdl create mode 100755 res/models/model/vehicle/waggon/donnerbuechse.mdl create mode 100755 res/models/model/vehicle/waggon/ew_ii.mdl create mode 100755 res/models/model/vehicle/waggon/ew_iv.mdl create mode 100755 res/models/model/vehicle/waggon/goods_1850_v2.mdl create mode 100755 res/models/model/vehicle/waggon/hbi1_v2.mdl create mode 100755 res/models/model/vehicle/waggon/kesselwagen_1860.mdl create mode 100755 res/models/model/vehicle/waggon/kesselwagen_1910.mdl create mode 100755 res/models/model/vehicle/waggon/kesselwagen_1950.mdl create mode 100755 res/models/model/vehicle/waggon/open_1850.mdl create mode 100755 res/models/model/vehicle/waggon/open_1910.mdl create mode 100755 res/models/model/vehicle/waggon/open_1975.mdl create mode 100755 res/models/model/vehicle/waggon/rungenwagen_1850.mdl create mode 100755 res/models/model/vehicle/waggon/rungenwagen_1890.mdl create mode 100755 res/models/model/vehicle/waggon/rungenwagen_1950.mdl create mode 100755 res/models/model/vehicle/waggon/verbandswagen_v2.mdl create mode 100755 res/models/model/vehicle/waggon/wagen_bayrisch_1865.mdl create mode 100644 workshop_preview.jpg diff --git a/mod.lua b/mod.lua new file mode 100755 index 0000000..44879c8 --- /dev/null +++ b/mod.lua @@ -0,0 +1,28 @@ +function data() +return { + + info = { + tags = { "Europe", "USA", "Script Mod" }, + + minorVersion = 0, + severityAdd = "NONE", + severityRemove = "NONE", + name = _("Отключить весь транспорт для 1520DLC"), + description = _("Адаптированная версия мода Disable all vanilla transport для серии модов 1520 DLC"), + authors = { + { + name = "Rinaldus", + role = "CREATOR", + + } + }, + visible = true + }, + options = { + }, + + runFn = function (settings) + + end +} +end \ No newline at end of file diff --git a/res/models/model/vehicle/bus/aboag.mdl b/res/models/model/vehicle/bus/aboag.mdl new file mode 100755 index 0000000..22a7379 --- /dev/null +++ b/res/models/model/vehicle/bus/aboag.mdl @@ -0,0 +1,170 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 4.3211002349854, 1.1229000091553, 3.838700056076, + }, + bbMin = { + -4.3413000106812, -1.1229000091553, -0.49939998984337, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/aboag/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/aboag/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.2495, -0.7922, 0.4817, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/aboag/lod_0_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 3.2495, 0.7922, 0.4817, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/aboag/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.2054, 0, 0.4915, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/aboag/lod_0_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/aboag/lod_0_windows_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.8,.8,.8),transf.degToRad( 0, 0, 0), vec3.new( 3.8095, -0.7212, 0.9598)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.8,.8,.8),transf.degToRad( 0, 0, 0), vec3.new( 3.8095, 0.7252, 0.9598)), + type = "MESH", + },{ + id = "vehicle/bus/aboag/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1100, + + }, + }, + metadata = { + description = { + name = _("Daimler top-seater"), + description = _("An early top-seater bus, used by ABOAG, a public transportation company in Berlin, Germany.") + }, + roadVehicle = { + topSpeed = 35, + weight = 5, + power = 45, + tractiveEffort = 8, + configs = { + + { + axles = { "vehicle/bus/aboag/lod_0_w2.msh" }, + wheels = { "vehicle/bus/aboag/lod_0_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + } + }, + soundSet = "bus_old" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 42 } + }, + loadSpeed = 1.5, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.6, -0.3, 0.9)), crew = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.1, -0.4, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.1, 0.5, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.1, 0.6, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.1, -0.4, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.8, 0.6, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.8, -0.4, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, 0.6, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, -0.4, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.4, 0.6, 0.9))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.4, -0.4, 0.9))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-2.0, -0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1.2, -0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.6, -0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.2, -0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.2, -0.7, 3))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.2, 0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.1, 0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-.8, 0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.8, 0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-2.8, 0.7, 3))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-3.4, 0.7, 3))}, + } + }, + availability = { + yearFrom = 1922, + yearTo = 1972 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/bus/benz_o6600.mdl b/res/models/model/vehicle/bus/benz_o6600.mdl new file mode 100755 index 0000000..cb3cfd0 --- /dev/null +++ b/res/models/model/vehicle/bus/benz_o6600.mdl @@ -0,0 +1,212 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 5.0855407714844, 1.1831549406052, 2.697762966156, + }, + bbMin = { + -4.6582179069519, -1.1831549406052, 4.1007995605469e-005, + }, + }, + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/bus/benz_o6600/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/benz_o6600/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.1327, -1.0479, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/benz_o6600/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9605, -1.0734, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/benz_o6600/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.692, -0.9614, 0.5156, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/benz_o6600/lod_0_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 3.692, 0.9614, 0.5156, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/benz_o6600/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6567, 0, 0.5156, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/benz_o6600/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.15,1.15),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 4.5, 0.82, 1.044)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.15,1.15),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 4.5, -0.82, 1.044)), + type = "MESH", + }, { + id = "vehicle/bus/benz_o6600/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 950, + + }, + }, + metadata = { + description = { + name = _("Mercedes-Benz O 6600"), + description = _("This city-omnibus, built by Mercedes-Benz, cost 52'785 D-mark at that time.") + }, + roadVehicle = { + topSpeed = 65, + weight = 9, + power = 107, + tractiveEffort = 12, + configs = { + --[[{ + axles = { "vehicle/bus/benz_o6600/benz_o6600_lod_2_w2.msh" }, + wheels = { "vehicle/bus/benz_o6600/benz_o6600_lod_2_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + }, + { + axles = { "vehicle/bus/benz_o6600/benz_o6600_lod_1_w2.msh" }, + wheels = { "vehicle/bus/benz_o6600/benz_o6600_lod_1_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + },]]-- + { + axles = { "vehicle/bus/benz_o6600/lod_0_w2.msh" }, + wheels = { "vehicle/bus/benz_o6600/lod_0_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + } + }, + soundSet = "bus_old" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 60 } + }, + loadSpeed = 2, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.3, 0.3, 0.6)),crew = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.5, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.5, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.3, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.3, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.9, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.9, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.38, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.38, 0.67, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.18, 0.3, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.18, 0.67, 0.7))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.5, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.5, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.3, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.3, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.9, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.9, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.38, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.38, -0.8, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.18, -0.4, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.18, -0.8, 0.7))}, + + } + }, + availability = { + yearFrom = 1954, + yearTo = 1976 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/res/models/model/vehicle/bus/berkhof_duvedec.mdl b/res/models/model/vehicle/bus/berkhof_duvedec.mdl new file mode 100755 index 0000000..a948e52 --- /dev/null +++ b/res/models/model/vehicle/bus/berkhof_duvedec.mdl @@ -0,0 +1,227 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 8.9517908096313, 1.4530000686646, 2.7877559661865, + }, + bbMin = { + -7.8876490592957, -1.4271960258484, -0.0089289844036102, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/berkhof_duvedec_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.6209001541138, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/berkhof_duvedec_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.1243999004364, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + close_all_doors = { + { + forward = false, + name = "open_all_doors", + + }, { + forward = false, + name = "open_all_doors", + + }, + }, + open_all_doors = { + { + forward = true, + name = "open_all_doors", + + }, { + forward = true, + name = "open_all_doors", + + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1330, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + description = { + name = _("Berkhof Duvedec"), + description = _("Berkhof Duvedec received many good reviews of car owners for their consumer qualities."), + }, + maintenance = { + lifespan = 35, + runningCosts = -1, + + }, + roadVehicle = { + configs = { + { + axles = { + "vehicle/bus/berkhof_duvedec/lod_0_w2.msh", + "vehicle/bus/berkhof_duvedec/lod_0_w3.msh", + }, + fakeBogies = { + { + group = 1, + offset = 0, + position = -1.25, + }, + { + group = 11, + offset = 0, + position = 3.88, + }, + { + group = 11, + offset = 0, + position = -1.25, + }, + }, + wheels = { + "vehicle/bus/berkhof_duvedec/lod_0_w1.msh", + }, + + }, + }, + power = 180, + soundSet = { + horn = "vehicle/truck_modern/horn.wav", + name = "bus_modern", + + }, + topSpeed = 90, + tractiveEffort = 30, + weight = 15, + + }, + transportVehicle = { + capacities = { + { + capacity = 100, + type = "PASSENGERS", + }, + }, + carrier = "ROAD", + loadSpeed = 5, + multipleUnitOnly = false, + seats = { + + -- front + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.9 -3.1, 0.6, 0.6)), crew = true }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.8 -3.1, -0.8, 0.6)) }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.8 - 3.1, 0.7, 0.6)) }, + + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.15 - 3.1, -0.7, 0.6)) }, + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.15 - 3.1, -0.15, 0.6)) }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.15 - 3.1, 0.8, 0.6)) }, + + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.9 - 3.1, -0.8, 0.6)) }, + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.9 - 3.1, -0.3, 0.6)) }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.9 - 3.1, 0.7, 0.6)) }, + + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.1 - 3.1, -0.8, 0.6)) }, + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.1 - 3.1, -0.3, 0.6)) }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.1 - 3.1, 0.7, 0.6)) }, + + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.3 - 3.1, 0.7, 0.6)) }, + + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0 - 3.1, -0.8, 0.6)) }, + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0 - 3.1, -0.3, 0.6)) }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0 - 3.1, 0.7, 0.6)) }, + + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.35 - 3.1, -0.7, 0.6)) }, + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.35 - 3.1, -0.15, 0.6)) }, + + { group = 11, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.35 - 3.1, 0.8, 0.6)) }, + + + -- back + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, -0.8, 0.6)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, -0.3, 0.6)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, 0.7, 0.6)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, 0.7, 0.6)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.9, -0.8, 0.6)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.9, -0.3, 0.6)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.9, 0.7, 0.6)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -0.8, 0.9)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -0.3, 0.9)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.7, 0.9)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, -0.8, 0.9)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, -0.3, 0.9)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, 0.2, 0.9)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.7, 0.7, 0.9)) }, + }, + }, + + }, + +} +end diff --git a/res/models/model/vehicle/bus/et13.mdl b/res/models/model/vehicle/bus/et13.mdl new file mode 100755 index 0000000..ef42a24 --- /dev/null +++ b/res/models/model/vehicle/bus/et13.mdl @@ -0,0 +1,339 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 2.3890039920807, 0.93712097406387, 2.6325719356537, + }, + bbMin = { + -3.0820770263672, -0.93712097406387, -0.43434798717499, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/et13/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_2_body_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_2_door.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.4272, -0.747, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.61, 0, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.8108, -0.6154, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_2_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.8108, 0.6154, 0.4418, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + }, + close_all_doors = { + }, + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 200, + visibleTo = 750, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/bus/et13/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_1_body_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_1_door.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.4272, -0.747, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.61, 0, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.8108, -0.6154, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_1_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.8108, 0.6154, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.99,.99,.99),transf.degToRad( 0, 0, 0), vec3.new( 2.2286, -0.428, 0.8525)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.99,.99,.99),transf.degToRad( 0, 0, 0), vec3.new( 2.2286, 0.428, 0.8525)), + type = "MESH", + }, + }, + events = { + open_all_doors = { + [3] = { + forward = true, + name = "opend", + }, + }, + close_all_doors = { + [3] = { + forward = false, + name = "opend", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 50, + visibleTo = 200, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/bus/et13/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_0_body_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_0_door.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.4272, -0.747, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.61, 0, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.8108, -0.6154, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/et13/lod_0_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.8108, 0.6154, 0.4418, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.99,.99,.99),transf.degToRad( 0, 0, 0), vec3.new( 2.2286, -0.428, 0.8525)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.99,.99,.99),transf.degToRad( 0, 0, 0), vec3.new( 2.2286, 0.428, 0.8525)), + type = "MESH", + },{ + id = "vehicle/bus/et13/lod_0_logo_body_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [3] = { + forward = true, + name = "opend", + }, + }, + close_all_doors = { + [3] = { + forward = false, + name = "opend", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 50, + + }, + }, + metadata = { + description = { + name = _("Postbus ET 13"), + description = _("The ET 13 was a commonly used motor-driven bus, built in Austria.") + }, + roadVehicle = { + topSpeed = 25, + weight = 4, + power = 20, + tractiveEffort = 6, + configs = { + { + wheels = { + "vehicle/bus/et13/lod_2_w2.msh", + }, + axles = { + "vehicle/bus/et13/lod_2_w1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + },{ + wheels = { + "vehicle/bus/et13/lod_1_w2.msh", + }, + axles = { + "vehicle/bus/et13/lod_1_w1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + },{ + wheels = { + "vehicle/bus/et13/lod_0_w2.msh", + }, + axles = { + "vehicle/bus/et13/lod_0_w1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + } + }, + soundSet = "bus_old" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 32 } + }, + loadSpeed = 1.5, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.24, 0.28, 0.7)), crew = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.6, 0.34, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.6, -0.2, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.25, 0.34, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.25, -0.2, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.94, 0.34, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.94, -0.2, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.68, 0.34, 0.7))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.68, -0.2, 0.7))}, + + } + }, + availability = { + yearFrom = 1905, + yearTo = 1956 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/res/models/model/vehicle/bus/landauer.mdl b/res/models/model/vehicle/bus/landauer.mdl new file mode 100755 index 0000000..0ae8aed --- /dev/null +++ b/res/models/model/vehicle/bus/landauer.mdl @@ -0,0 +1,459 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/landauer/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_2_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_2_window_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_2_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_2_window_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, + { + id = "vehicle/bus/landauer/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.2801, -0.6554, 0.4874, 1, + }, + type = "MESH", + + },{ + id = "vehicle/bus/landauer/lod_2_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.2801, 0.6554, 0.4874, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8978, 0, 0.6165, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_2_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + }, + open_all_doors = { + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, + }, + }, + static = false, + visibleFrom = 200, + visibleTo = 700, + + },{ + animations = { + + }, + children = { + { + id = "vehicle/bus/landauer/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_1_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_1_window_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_1_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_1_window_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, + { + id = "vehicle/bus/landauer/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.2801, -0.6554, 0.4874, 1, + }, + type = "MESH", + + },{ + id = "vehicle/bus/landauer/lod_1_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.2801, 0.6554, 0.4874, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8978, 0, 0.6165, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_1_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1,.7,.7),transf.degToRad( 0, 0, 0), vec3.new( 1.935, 0, 1.162)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1,.7,.7),transf.degToRad( 0, 0, 0), vec3.new( 0.855, 0.7321, 2.095)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1,.7,.7),transf.degToRad( 0, 0, 0), vec3.new( 0.855, -0.7321, 2.095)), + type = "MESH", + }, { + id = "vehicle/bus/landauer/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend1", + }, [4] = { + forward = false, + name = "opend1", + }, + [5] = { + forward = false, + name = "opend1", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend1", + }, [4] = { + forward = true, + name = "opend1", + }, + [5] = { + forward = true, + name = "opend1", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 40, + visibleTo = 200, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/bus/landauer/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_window_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_window_interior_d1.msh", + transf = transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0)), + type = "MESH", + + },{ + id = "vehicle/bus/landauer/lod_0_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_window_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_window_interior_d1.msh", + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(1,1,1),transf.degToRad( 0, 0, 0), vec3.new( -0.2906, -0.6931, 0))), + type = "MESH", + + }, + { + id = "vehicle/bus/landauer/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.2801, -0.6554, 0.4874, 1, + }, + type = "MESH", + + },{ + id = "vehicle/bus/landauer/lod_0_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.2801, 0.6554, 0.4874, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8978, 0, 0.6165, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_window.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/landauer/lod_0_window_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1,.7,.7),transf.degToRad( 0, 0, 0), vec3.new( 1.935, 0, 1.162)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1,.7,.7),transf.degToRad( 0, 0, 0), vec3.new( 0.855, 0.7321, 2.095)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1,.7,.7),transf.degToRad( 0, 0, 0), vec3.new( 0.855, -0.7321, 2.095)), + type = "MESH", + }, { + id = "vehicle/bus/landauer/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend1", + }, [4] = { + forward = false, + name = "opend1", + }, + [5] = { + forward = false, + name = "opend1", + }, [6] = { + forward = false, + name = "opend1", + }, + [7] = { + forward = false, + name = "opend1", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend1", + }, [4] = { + forward = true, + name = "opend1", + }, + [5] = { + forward = true, + name = "opend1", + }, [6] = { + forward = true, + name = "opend1", + }, + [7] = { + forward = true, + name = "opend1", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 40, + + }, + }, + metadata = { + description = { + name = _("Landauer"), + description = _("The Landauer was basically a motor-driven carriage, built by the Benz company. As the first bus of the world, it was in use on the line Siegen-Nephten-Deuz.") + }, + roadVehicle = { + topSpeed = 20, + weight = 2, + power = 10, + tractiveEffort = 8, + configs = { + { + axles = { "vehicle/bus/landauer/lod_2_w2.msh",}, + wheels = {"vehicle/bus/landauer/lod_2_w1.msh" }, + fakeBogies = { + { group = 0, position = 0.0, offset = 0.0 }, + } + },{ + axles = { "vehicle/bus/landauer/lod_1_w2.msh",}, + wheels = {"vehicle/bus/landauer/lod_1_w1.msh" }, + fakeBogies = { + { group = 0, position = 0.0, offset = 0.0 }, + } + },{ + axles = { "vehicle/bus/landauer/lod_0_w2.msh",}, + wheels = {"vehicle/bus/landauer/lod_0_w1.msh" }, + fakeBogies = { + { group = 0, position = 0.0, offset = 0.0 }, + } + } + }, + soundSet = "bus_old" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 24 } + }, + loadSpeed = 1, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.84, 0.21, 0.93)), crew = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.59, -0.30, 0.83))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.59, 0.30, 0.83))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.6, 0.30, 0.83))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.6, -0.30, 0.83))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.84, -0.35, 0.93))}, + } + }, + availability = { + yearFrom = 1891, + yearTo = 1942 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/bus/man_sl_192.mdl b/res/models/model/vehicle/bus/man_sl_192.mdl new file mode 100755 index 0000000..5af89e3 --- /dev/null +++ b/res/models/model/vehicle/bus/man_sl_192.mdl @@ -0,0 +1,519 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 5.2589540481567, 1.2951840162277, 2.7318749427795, + }, + bbMin = { + -5.056736946106, -1.2951840162277, -0.4757179915905, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/man_sl_192/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.7532, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5112, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.4827, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.7247, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7542, -0.9308, 0.4703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.7542, 0.9308, 0.4703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3694, 0, 0.4703, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend3", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend3", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 220, + visibleTo = 990, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/bus/man_sl_192/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.7532, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5112, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.4827, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.7247, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7542, -0.9308, 0.4703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.7542, 0.9308, 0.4703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3694, 0, 0.4703, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend3", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend3", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 220, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/bus/man_sl_192/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.7532, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5112, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.4827, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.7247, -1.1135, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7542, -0.9308, 0.4703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.7542, 0.9308, 0.4703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/man_sl_192/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3694, 0, 0.4703, 1, + }, + type = "MESH", + + }, + -- Interior ------------------------ + { + id = "vehicle/bus/man_sl_192/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + + -- ------------------------ + + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.8,0.8),transf.degToRad( -7.0, 0.0, 0.0), vec3.new( 4.968, -0.897, 0.77)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.8,0.8),transf.degToRad( 7.0, 0.0, 0.0), vec3.new( 4.965, 0.92, 0.77)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.4,0.4),transf.degToRad( 180.0, 0.0, 0.0), vec3.new( -5.057, 0.871, 1.066)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.4,0.4),transf.degToRad( 180.0, 0.0, 0.0), vec3.new( -5.057, -0.903, 1.066)), + type = "MESH", + },{ + id = "vehicle/bus/man_sl_192/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + + + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend3", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend3", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("MAN SL 192"), + description = _("Standard public transport bus, built in big numbers.") + }, + roadVehicle = { + topSpeed = 80, + weight = 16, + power = 141, + tractiveEffort = 20, + configs = { + { + axles = { "vehicle/bus/man_sl_192/lod_2_w2.msh" }, + wheels = { "vehicle/bus/man_sl_192/lod_2_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + }, + { + axles = { "vehicle/bus/man_sl_192/lod_1_w2.msh" }, + wheels = { "vehicle/bus/man_sl_192/lod_1_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + }, + { + axles = { "vehicle/bus/man_sl_192/lod_0_w2.msh" }, + wheels = { "vehicle/bus/man_sl_192/lod_0_w1.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + } + }, + soundSet = { name = "bus_modern", horn = "vehicle/truck_modern/horn.wav" } + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { + type = "PASSENGERS", + capacity = 64, + } + }, + loadSpeed = 3, + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.9, 0.5, 0.4)), crew = true }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.0268, -0.8, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.0268, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.0268, 0.7, 0.6)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.4554, -0.7, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.4554, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.4554, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.4554, 0.7, 0.65)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.4537, -0.8, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.4537, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.4537, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.4537, 0.7, 0.65)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.6672, -0.8, 0.5)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.6672, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.6672, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.6672, 0.7, 0.65)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.1193, -0.8, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.1193, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.1193, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.1193, 0.7, 0.65)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2618, -0.7, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2618, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2618, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2618, 0.7, 0.65)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2634, -0.8, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2634, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2634, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2634, 0.7, 0.65)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, -0.8, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, -0.4124, 0.65)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, 0.3654, 0.65)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, 0.7, 0.65)) }, + } + }, + availability = { + yearFrom = 1970, + yearTo = 1976 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + } + + }, + +} +end diff --git a/res/models/model/vehicle/bus/obeissante.mdl b/res/models/model/vehicle/bus/obeissante.mdl new file mode 100755 index 0000000..2c95b99 --- /dev/null +++ b/res/models/model/vehicle/bus/obeissante.mdl @@ -0,0 +1,177 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 2.3695209026337, 0.95464998483658, 3.2160630226135, + }, + bbMin = { + -2.5171689987183, -0.95464998483658, -0.61202698945999, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/obeissante/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1119, -0.6138, -0.0016, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/obeissante/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1119, 0.6138, -0.0016, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/obeissante/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.9372, 0, 0.6105, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/obeissante_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.3979, 0, -0.0016, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/obeissante/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -0.0016, 1, + }, + type = "MESH", + + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.9,.9,.9),transf.degToRad( 0, 0, 0), vec3.new( 2.3556, 0, 1.705)), + type = "MESH", + }, { + id = "vehicle/bus/obeissante/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -0.0016, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_ds = { + [1] = { + forward = false, + name = "opend1", + }, + [2] = { + forward = false, + name = "opend2", + }, + }, + open_all_ds = { + [1] = { + forward = true, + name = "opend1", + }, + [2] = { + forward = true, + name = "opend2", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 820, + + }, + }, + metadata = { + description = { + name = _("L'Obéissante"), + description = _("Built by the French Amédée Bollée, this steam omnibus was able to run bigger distances, e.g. from Le Mans to Paris.") + }, + roadVehicle = { + topSpeed = 17, + weight = 2, + power = 4, + tractiveEffort = 5, + configs = { + { + axles = { "vehicle/bus/obeissante/lod_0_w1.msh", + "vehicle/bus/obeissante/lod_0_w2.msh",}, + fakeBogies = { } + } + }, + soundSet = "bus_horse" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 20 } + }, + loadSpeed = 1, + seats = { + + { group =7, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.25, -0.07, 1.1)), crew = true}, + --passangers + { group =7, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.6, 0.6, 1.2))}, + { group =7, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0, 0.6, 1.2))}, + { group =7, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.6, 0.6, 1.2))}, + { group =7, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.6, -0.6, 1.2))}, + { group =7, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0, -0.6, 1.2))}, + { group =7, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.6, -0.6, 1.2))}, + + + + } + }, + availability = { + yearFrom = 1870, -- 1873 + yearTo = 1924 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + particleSystem = { + emitters = { + { + position = { -1.4836, .0, 3.2145}, + velocity = { .0, .0, 7.0 }, + color = { .3, .3, .3 }, + frequency = 60, + lifeTime = 10.0, + size01 = { .7, 8.0 }, + child = 2 + }, + } + } + + }, + +} +end diff --git a/res/models/model/vehicle/bus/postkutsche.mdl b/res/models/model/vehicle/bus/postkutsche.mdl new file mode 100755 index 0000000..f1e454c --- /dev/null +++ b/res/models/model/vehicle/bus/postkutsche.mdl @@ -0,0 +1,200 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/postkutsche/lod_2_postkutsche1850.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/bus/postkutsche/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4179, 0, 0.7049, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/postkutsche_lod_2_guide.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.1243, 0, 0.4429, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 180, + visibleTo = 900, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/bus/postkutsche_lod_1_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_1_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7147, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 80, + visibleTo = 180, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/bus/postkutsche_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_0_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7147, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + }, + + open_all_doors = { + [1] = { + forward = true, + name = "open_all_doors", + + }, + }, + close_all_doors = { + [1] = { + forward = false, + name = "open_all_doors", + + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 80, + + }, + }, + metadata = { + description = { + name = _("Stage coach"), + description = _("A common stage coach used for public transportation in the early years.") + }, + roadVehicle = { + topSpeed = 15, + weight = 1, + power = 2, + tractiveEffort = 2, + configs = { + { + }, + { + axles = { "vehicle/bus/postkutsche/lod_1_w1.msh", + "vehicle/bus/postkutsche/lod_1_w2.msh", }, + fakeBogies = { { group = 7, position = 3.7147, offset = 0.0 } } + }, + { + axles = { "vehicle/bus/postkutsche/lod_0_w1.msh", + "vehicle/bus/postkutsche/lod_0_w2.msh", }, + fakeBogies = { { group = 11, position = 3.7147, offset = 0.0 } } + } + }, + soundSet = "bus_horse" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 16 } + }, + loadSpeed = 1, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.41, 0, 2.05)), crew = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, -0.4, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, 0.2, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.5, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 0.4, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.1, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.3, -0.3, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.3, 0.4, 0.8))}, + } + }, + availability = { + yearFrom = 1850, + yearTo = 1907 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 15 + } + }, + +} +end diff --git a/res/models/model/vehicle/bus/saurer_tuescher.mdl b/res/models/model/vehicle/bus/saurer_tuescher.mdl new file mode 100755 index 0000000..f944b9a --- /dev/null +++ b/res/models/model/vehicle/bus/saurer_tuescher.mdl @@ -0,0 +1,211 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 3.4786009788513, 1.1098109483719, 2.7634139060974, + }, + bbMin = { + -3.4596209526062, -1.1098109483719, -0.48116800189018, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/saurer_tuescher/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_door1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.1073, -1.009, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_door2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.2898, -1.0365, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_door3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.7208, -1.0356, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4478, 0, 0.4891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7139, -0.812, 0.4887, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.7139, 0.812, 0.4887, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/saurer_tuescher/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.4,1.4,1.4),transf.degToRad( 0, 0, 0), vec3.new( 3.3085, 0.8115, 1.0411)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.4,1.4,1.4),transf.degToRad( 0, 0, 0), vec3.new( 3.3085, -0.8115, 1.0411)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(.85,.85,.85),transf.degToRad( 182, 5.8788, 0), vec3.new( -3.4454, -0.6592, 0.8425)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.flipY(transf.scaleRotZYXTransl(vec3.new(.85,.85,.85),transf.degToRad( 182, 5.8788, 0), vec3.new( -3.4454, -0.6732, 0.8425))), + type = "MESH", + },{ + id = "vehicle/bus/saurer_tuescher/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend3", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend3", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 830, + + }, + }, + metadata = { + description = { + name = _("Saurer Tüscher"), + description = _("An urban public-transit bus, based on a Saurer carriage and a Tüscher car body.") + }, + roadVehicle = { + topSpeed = 50, + weight = 8, + power = 80, + tractiveEffort = 10, + configs = { + { + axles = { "vehicle/bus/saurer_tuescher/lod_0_w1.msh" }, + wheels = { "vehicle/bus/saurer_tuescher/lod_0_w2.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + } + }, + soundSet = "bus_old" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 52 } + }, + loadSpeed = 2, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.14, -0.06, 0.8)), crew = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.8, 0.67, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.8, 0.21, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0, -0.6, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0, 0.4, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.67, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.21, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -0.6, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.8, 0.67, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.8, 0.21, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.8, -0.6, 0.8))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.9, 0.8, 0.8))}, + + } + }, + availability = { + yearFrom = 1939, + yearTo = 1976 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/bus/volvo_5000.mdl b/res/models/model/vehicle/bus/volvo_5000.mdl new file mode 100755 index 0000000..ac65329 --- /dev/null +++ b/res/models/model/vehicle/bus/volvo_5000.mdl @@ -0,0 +1,479 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 6.480800151825, 1.7743511199951, 2.7697329521179, + }, + bbMin = { + -5.5385432243347, -1.3530210256577, 4.3004751205444e-005, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/bus/volvo_5000/lod_2_volvo5000.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_door1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.3426, -1.1448, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_door2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.8837, -1.1448, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_door3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8825, -1.1447, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_door4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0572, -1.1475, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4992, 0, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9743, -1.008, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_2_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.9743, 1.008, 0.4804, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend1", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend1", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 1140, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/bus/volvo_5000/lod_1_volvo5000.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_door1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.3426, -1.1448, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_door2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.8837, -1.1448, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_door3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8825, -1.1447, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_door4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0572, -1.1475, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4992, 0, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9743, -1.008, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_1_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.9743, 1.008, 0.4804, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend1", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend1", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/bus/volvo_5000/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.3426, -1.1448, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.8837, -1.1448, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8825, -1.1447, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0572, -1.1475, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4992, 0, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9743, -1.008, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.9743, 1.008, 0.4804, 1, + }, + type = "MESH", + + }, { + id = "vehicle/bus/volvo_5000/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_square_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.9,0.5),transf.degToRad( -2.0, 0.0, 0.0), vec3.new( 5.45, -0.84, 0.675)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_square_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.9,0.5),transf.degToRad( 2.0, 0.0, 0.0), vec3.new( 5.45, 0.84, 0.675)), + type = "MESH", + }, { + id = "vehicle/bus/volvo_5000/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend3", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend3", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0,0, 0, 0,0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Volvo 5000"), + description = _("This bus is a rear-engine, low-floor single-deck city bus with a chassis built by Volvo and bodywork by Säffle.") + }, + roadVehicle = { + topSpeed = 100, + weight = 10, + power = 120, + tractiveEffort = 15, + configs = { + { + axles = { "vehicle/bus/volvo_5000/lod_2_w1.msh" }, + wheels = { "vehicle/bus/volvo_5000/lod_2_w2.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + }, + { + axles = { "vehicle/bus/volvo_5000/lod_1_w1.msh" }, + wheels = { "vehicle/bus/volvo_5000/lod_1_w2.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + }, + { + axles = { "vehicle/bus/volvo_5000/lod_0_w1.msh" }, + wheels = { "vehicle/bus/volvo_5000/lod_0_w2.msh" }, + fakeBogies = { { group = 0, position = 0, offset = 0 } } + } + }, + soundSet = { name = "bus_modern", horn = "vehicle/truck_modern/horn.wav" } + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "PASSENGERS", capacity = 72 } + + }, + loadSpeed = 3, + + seats = { + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.55, 0.55, 0.3)), crew = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.35, 0.67, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.35, 0.2, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.35, -0.9, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.4, 0.87, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.4, 0.4, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.4, -0.7, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.25, -0.98, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.25, -0.5, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(1.25, 0.27, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(1.25, 0.75, 0.4))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.18, -0.98, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.18, -0.5, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-1.18, 0.27, 0.4))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-1.18, 0.75, 0.4))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2, -0.98, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2, -0.5, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-2, 0.27, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-2, 0.75, 0.6))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2.9, -0.76, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2.9, -0.25, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(190.0, 0.0, 0.0), vec3.new(-2.9, 0.5, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(190.0, 0.0, 0.0), vec3.new(-2.9, 0.9, 0.6))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4, -0.98, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4, -0.5, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-4, 0.27, 0.6))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-4, 0.75, 0.6))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-5, -0.92, 0.74))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-5, -0.4, 0.74))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-5, 0.2, 0.74))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-5, 0.7, 0.74))}, + + + + + } + }, + availability = { + yearFrom = 2003, + yearTo = 2005 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + } + }, + +} +end diff --git a/res/models/model/vehicle/plane/airbus_a320.mdl b/res/models/model/vehicle/plane/airbus_a320.mdl new file mode 100755 index 0000000..10515bc --- /dev/null +++ b/res/models/model/vehicle/plane/airbus_a320.mdl @@ -0,0 +1,530 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 16.216171264648, 17.050912857056, 11.61053943634, + }, + bbMin = { + -21.30428314209, -17.050912857056, -0.13521492481232, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + -- body + { + id = "vehicle/plane/airbus_a320/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_body_mat2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 11.6641, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -12.8088, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 11.6641, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -12.8088, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_rotor1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.009, 5.698, -1.4578+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_rotor1.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 4.009, -5.698, -1.4578+3, 1, + }, + type = "MESH", + + }, + -- front wheel + { + id = "vehicle/plane/airbus_a320_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 11.5026, 0, -0.3497+3, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/plane/airbus_a320/lod_0_flap_front_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,177.5,84), vec3.new(13.001, 0.4034, -1.0873+3)), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_flap_front_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(180,0,-60), vec3.new(11.6063, 0.4139, -1.1478+3)), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_flap_front_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,177.5,84), vec3.new(13.001, 0.4034, -1.0873+3))), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_flap_front_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(180,0,-60), vec3.new(11.6063, 0.4139, -1.1478+3))), + type = "MESH", + + }, + + -- back wheels + { + id = "vehicle/plane/airbus_a320/lod_0_flap_back_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.3528, 0.1663, -1.4696+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_flap_back_left.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -1.3528, -0.1663, -1.4696+3, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/airbus_a320_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.3928, 3.7408, -0.2332+3, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/plane/airbus_a320_lod_0_back_wheel_strut.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.396, 1.9616, -0.437+3, 1, + }, + type = "GROUP", + + }, + + { + id = "vehicle/plane/airbus_a320_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -1.3928, -3.7408, -0.2332+3, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/plane/airbus_a320_lod_0_back_wheel_strut.grp", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -1.396, -1.9616, -0.437+3, 1, + }, + type = "GROUP", + + }, + + + -- Aircraft rudders + { + id = "vehicle/plane/airbus_a320/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(110.708,-6.02,89.584), vec3.new(-4.3902, 14.6651, 1.0659+3)), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_aileron_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(110.708,-6.02,89.584), vec3.new(-4.3902, 14.6651, 1.0659+3))), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_elevator_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(109.324,-10.91,87.267), vec3.new(-19.1243, 3.56, 1.7768+3)), + + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_elevator_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(109.324,-10.91,87.267), vec3.new(-19.1243, 3.56, 1.7768+3))), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_inboard_flap_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(108.098,-5.854,88.091), vec3.new(-2.2627, 10.1174, 0.3957+3)), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_inboard_flap_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,-7.664,90), vec3.new(-1.3397, 4.838, -0.3603+3)), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_inboard_flap_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(108.098,-5.854,88.091), vec3.new(-2.2627, 10.1174, 0.3957+3))), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_inboard_flap_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(90,-7.664,90), vec3.new(-1.3397, 4.838, -0.3603+3))), + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_rudder.msh", + transf = transf.rotZYXTransl(transf.degToRad(-180.001,-156.124,-179.992), vec3.new(-18.8526, 0, 6.3287+3)), + type = "MESH", + + }, + + + -- lights + { + id = "vehicle/plane/airbus_a320/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_anti_collision_strobo_bottom.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_anti_collision_strobo_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/airbus_a320/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, + }, + events = { + open_flaps = { + [25] = { + forward = true, + name = "open", + }, + [27] = { + forward = true, + name = "open", + }, + [26] = { + forward = true, + name = "open", + }, + [28] = { + forward = true, + name = "open", + }, + }, + close_flaps = { + [25] = { + forward = false, + name = "open", + }, + [27] = { + forward = false, + name = "open", + }, + [26] = { + forward = false, + name = "open", + }, + [28] = { + forward = false, + name = "open", + }, + }, + open_doors_left = { + [3] = { + forward = true, + name = "opend1", + }, + [4] = { + forward = true, + name = "opend2", + }, + }, + open_doors_right = { + [5] = { + forward = true, + name = "opend1", + }, + [6] = { + forward = true, + name = "opend2", + }, + }, + close_doors_left = { + [3] = { + forward = false, + name = "opend1", + }, + [4] = { + forward = false, + name = "opend2", + }, + }, + close_doors_right = { + [5] = { + forward = false, + name = "opend1", + }, + [6] = { + forward = false, + name = "opend2", + }, + }, + + open_wheels = { + [10] = { + forward = true, + name = "open", + }, + [11] = { + forward = true, + name = "open", + }, + [12] = { + forward = true, + name = "open", + }, + [13] = { + forward = true, + name = "open", + }, + [14] = { + forward = true, + name = "open", + }, + [15] = { + forward = true, + name = "open", + }, + [16] = { + forward = true, + name = "open", + }, + [17] = { + forward = true, + name = "open", + }, + [18] = { + forward = true, + name = "open", + }, + [19] = { + forward = true, + name = "open", + }, + [20] = { + forward = true, + name = "open", + }, + }, + + close_wheels = { + [10] = { + forward = false, + name = "open", + }, + [11] = { + forward = true, + name = "close", + }, + [12] = { + forward = true, + name = "close", + }, + [13] = { + forward = true, + name = "close", + }, + [14] = { + forward = true, + name = "close", + }, + [15] = { + forward = true, + name = "close", + }, + [16] = { + forward = true, + name = "close", + }, + [17] = { -- backwheel_grp + forward = true, + name = "close", + }, + [18] = { + forward = true, + name = "close", + }, + [19] = { -- backwheel_grp + forward = true, + name = "close", + }, + [20] = { + forward = true, + name = "close", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 8060, + + }, + }, + metadata = { + airVehicle = { + weight = 44000.0, + maxPayload = 0, + maxTakeOffWeight = 78000.0, + maxThrust = 236000.0, + idleThrust = 11800.0, + timeToFullThrust = 3, + wingArea = 122.6, + topSpeed = 230.0, + configs = { + { + axles = { + "vehicle/plane/airbus_a320/lod_0_w2.msh", + }, + wheels = { + "vehicle/plane/airbus_a320/lod_0_w1.msh", + }, + elevator = { + ids = { 38, 39 }, + maxAngle = 20 + }, + aileronLeft = { + ids = { 36 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 37 }, + maxAngle = 30 + }, + flaps = { -- TODO, fixit + ids = { 40, 41, 42, 43 }, + maxAngle = 35 + }, + rudder = { + ids = { 44 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + description = { + name = _("Airbus A320"), + description = _("Technically, the name A320 only refers to the original mid-sized aircraft, but it is often informally used to indicate any of the A318/A319/A320/A321 family.") + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 150, -- wikipedia + } + }, + loadSpeed = 7, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(13.15, 0.8, 0.0)), crew = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(13.15, -1.05, 0.0)), crew = true}, + --passangers + + } + }, + soundConfig = { + soundSet = { name = "aircraft_jet_modern" } + } + + }, + +} +end diff --git a/res/models/model/vehicle/plane/boeing_737.mdl b/res/models/model/vehicle/plane/boeing_737.mdl new file mode 100755 index 0000000..11db69f --- /dev/null +++ b/res/models/model/vehicle/plane/boeing_737.mdl @@ -0,0 +1,434 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 15.126559257507, 14.180633544922, 11.674771308899, + }, + bbMin = { + -14.741494178772, -14.180633544922, -0.097778141498566, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + -- Body + { + id = "vehicle/plane/boeing_737/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.4301, 1.5941, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.6291, 1.4587, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.4301, -1.5941, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.6291, -1.4587, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_rotor1.msh", + transf = transf.rotZYXTransl(transf.degToRad(-91.77,-85.327,-89.998), vec3.new(4.1182, 5.0691, -0.5121+2)), + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_rotor1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(-91.77,-85.327,-89.998), vec3.new(4.1182, 5.0691, -0.5121+2))), + type = "MESH", + + }, + -- back wheels + { + id = "vehicle/plane/boeing_737/lod_0_flap_back_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(180,0,-78.5), vec3.new(0.1956, 2.8007, 0.3302+2)), + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_737_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.2539, 2.7987, 0.4701+2, 1, + }, + type = "GROUP", + + }, + { -- mirrored + id = "vehicle/plane/boeing_737/lod_0_flap_back_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(180,0,-78.5), vec3.new(0.1956, 2.8007, 0.3302+2))), + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_737_lod_0_back_wheel.grp", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(0.2539, 2.7987, 0.4701+2))), + type = "GROUP", + + }, + + -- front wheel + { + id = "vehicle/plane/boeing_737/lod_0_flap_front_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(180,8.94,-80), vec3.new(12.6405, 0.4236, -0.3735+2)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_flap_front_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,171.06,80), vec3.new(12.6405, -0.4236, -0.3735+2)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.9502, 0, -0.4198+2, 1, + }, + type = "GROUP", + + }, + -- Aircraft rudders + + { + id = "vehicle/plane/boeing_737/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(106.232,-5.479,89.697), vec3.new(-2.702, 12.1271, 1.0303+2)), + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_aileron_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(106.232,-5.479,89.697), vec3.new(-2.702, 12.1271, 1.0303+2))), + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_737/lod_0_elevator_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(-69.849,-174.301,-90.101), vec3.new(-13.431, 3.1295, 2.806+2)), + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_elevator_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(-69.849,-174.301,-90.101), vec3.new(-13.431, 3.1295, 2.806+2))), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_inboard_flap_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(107.153,-5.442,104.228), vec3.new(-0.6018, 5.2439, 0.1916+2)), + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_inboard_flap_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(107.153,-5.442,104.228), vec3.new(-0.6018, 5.2439, 0.1916+2))), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_inboard_flap_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,-5.596,44.053), vec3.new(-0.4405, 3.2216, 0.0978+2)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_inboard_flap_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(90,-5.596,44.053), vec3.new(-0.4405, 3.2216, 0.0978+2))), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_rudder.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,-21.1209,0.952), vec3.new(-12.5152, 0, 6.029+2)), + type = "MESH", + + }, + + + -- lights + { + id = "vehicle/plane/boeing_737/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_anti_collision_strobo_bottom.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_anti_collision_strobo_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_landing_lights.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_737/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_737/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_737/lod_0_logo_rudder.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,-21.1209,0.952), vec3.new(-12.5152, 0, 6.029+2)), + type = "MESH", + + }, + }, + events = { + + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + }, + open_doors_right = { + [4] = { + forward = true, + name = "opend3", + }, + [5] = { + forward = true, + name = "opend4", + }, + }, + close_doors_right = { + [4] = { + forward = false, + name = "opend3", + }, + [5] = { + forward = false, + name = "opend4", + }, + }, + close_wheels = { + + [9] = { + forward = false, + name = "open", + }, + [10] = { + forward = false, + name = "open", + }, + [11] = { + forward = false, + name = "open", + }, + [12] = { + forward = false, + name = "open", + }, + + [13] = { + forward = true, + name = "close", + }, + [14] = { + forward = true, + name = "close", + }, + [15] = { + forward = false, + name = "open", + }, + }, + open_wheels = { + + + [9] = { + forward = true, + name = "open", + }, + [10] = { + forward = true, + name = "open", + }, + [11] = { + forward = true, + name = "open", + }, + [12] = { + forward = true, + name = "open", + }, + + [13] = { + forward = false, + name = "close", + }, + [14] = { + forward = false, + name = "close", + }, + [15] = { + forward = true, + name = "open", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 6680, + + }, + }, + metadata = { + airVehicle = { + weight = 28100.0, + maxPayload = 0, + maxTakeOffWeight = 50300.0, + maxThrust = 128000.0, + idleThrust = 6400.0, + timeToFullThrust = 3, + wingArea = 102, + topSpeed = 216.666666667, + configs = { + { + axles = { + "vehicle/plane/boeing_737/lod_0_w2.msh", + }, + wheels = { + "vehicle/plane/boeing_737/lod_0_w1.msh", + }, + elevator = { + ids = { 26, 27 }, + maxAngle = 30 + }, + aileronLeft = { + ids = { 24 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 25 }, + maxAngle = 30 + }, + flaps = { -- TODO, fixit + ids = { 28, 29, 30, 31 }, + maxAngle = 35 + }, + rudder = { + ids = { 32,40 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + description = { + name = _("Boeing 737"), + description = _("The Boeing 737 is an American short- to medium-range twinjet narrow-body airliner.") + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 85, + } + }, + loadSpeed = 6, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(12.1, 0.52, 0.48)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_jet_old" } + } + + }, + +} +end diff --git a/res/models/model/vehicle/plane/boeing_757.mdl b/res/models/model/vehicle/plane/boeing_757.mdl new file mode 100755 index 0000000..1ed5cd0 --- /dev/null +++ b/res/models/model/vehicle/plane/boeing_757.mdl @@ -0,0 +1,551 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 23.173807144165, 19.027015686035, 13.399807929993, + }, + bbMin = { + -24.323081970215, -19.027015686035, -0.29814994335175, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/plane/boeing_757/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 18.4226, 1.8394, 1.0187+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.2031, 1.8617, 1.5733+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.7296, 1.8617, 1.3988+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -15.2515, 1.6702, 1.5977+3, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_757/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 18.4226, -1.8394, 1.0187+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9.2031, -1.8617, 1.5733+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -6.7296, -1.8617, 1.3988+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -15.2515, -1.6702, 1.5977+3, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_757/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_rotor1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0925, 6.5124, -1.181+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_rotor1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0925, -6.5124, -1.181+3, 1, + }, + type = "MESH", + + }, + -- front wheel + { + id = "vehicle/plane/boeing_757/lod_0_flap_front_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(179.382, 0.554, 39.0), vec3.new(18.423, 0.432, -0.83+3)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_flap_front_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(0.618, -0.554, 39.0), vec3.new(18.423, -0.432, -0.83+3)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 16.714, 0, 0.0751+3, 1, + }, + type = "GROUP", + + }, + -- back wheels + { + id = "vehicle/plane/boeing_757/lod_0_flap_back_inner_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.8996, 0.1625, -1.1532+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_flap_back_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.8852, 3.9129, -0.1449+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.8964, 3.6957, 0.0937+3, 1, + }, + type = "GROUP", + + }, + + { + id = "vehicle/plane/boeing_757/lod_0_flap_back_inner_left.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -1.8996, -0.1625, -1.1532+3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_flap_back_left.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -1.8852, -3.9129, -0.1449+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -1.8964, -3.6957, 0.0937+3, 1, + }, + type = "GROUP", + + }, + -- Aircraft rudders + { + id = "vehicle/plane/boeing_757/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(107.388,-4.177,89.633), vec3.new(-4.9719, 16.3974, 0.9995+3)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_elevator_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(-70.198, 186.485, -91.454), vec3.new(-21.8, 4.292, 1.75+3)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_inboard_flap_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,-4.787,0), vec3.new(-2.217, 10.941, 0.413+3)), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_inboard_flap_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,0), vec3.new(-1.614, 4.163, -0.222+3)), + type = "MESH", + + }, + + { + id = "vehicle/plane/boeing_757/lod_0_aileron_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(107.388,-4.177,89.633), vec3.new(-4.9719, 16.3974, 0.9995+3))), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_elevator_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(-70.198, 186.485, -91.454), vec3.new(-21.8, 4.292, 1.75+3))), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_inboard_flap_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(90,-4.787,0), vec3.new(-2.217, 10.941, 0.413+3))), + type = "MESH", + + }, { + id = "vehicle/plane/boeing_757/lod_0_inboard_flap_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(90,0,0), vec3.new(-1.614, 4.163, -0.222+3))), + type = "MESH", + + }, + + { + id = "vehicle/plane/boeing_757/lod_0_rudder.msh", + transf = transf.rotZYXTransl(transf.degToRad(180, -151.268, -180), vec3.new(-21.462, 0, 6.476+3)), + type = "MESH", + + }, + + -- lights + { + id = "vehicle/plane/boeing_757/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757/lod_0_anti_collision_strobo_bottom.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757/lod_0_anti_collision_strobo_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757/lod_0_landing_lights.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/boeing_757/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+3, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/boeing_757/lod_0_logo_rudder.msh", + transf = transf.rotZYXTransl(transf.degToRad(180, -151.268, -180), vec3.new(-21.462, 0, 6.476+3)), + type = "MESH", + + }, + }, + events = { + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend1", + }, + + --[[ + [4] = { + forward = true, + name = "opend1", + }, + ]]-- + + [5] = { + forward = true, + name = "opend1", + }, + }, + open_doors_right = { + [6] = { + forward = true, + name = "opend1", + }, + [7] = { + forward = true, + name = "opend1", + }, + + --[[ + [8] = { + forward = true, + name = "opend1", + }, + ]]-- + + [9] = { + forward = true, + name = "opend1", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend1", + }, + + --[[ + [4] = { + forward = false, + name = "opend1", + }, + ]]-- + + [5] = { + forward = false, + name = "opend1", + }, + }, + close_doors_right = { + [6] = { + forward = false, + name = "opend1", + }, + [7] = { + forward = false, + name = "opend1", + }, + + --[[ + [8] = { + forward = false, + name = "opend1", + }, + ]]-- + + [9] = { + forward = false, + name = "opend1", + }, + }, + open_wheels = { + [13] = { + forward = true, + name = "open" + }, + [14] = { + forward = true, + name = "open" + }, + [15] = { + forward = true, + name = "open" + }, + + [16] = { + forward = true, + name = "open" + }, + [17] = { + forward = true, + name = "open" + }, + [18] = { + forward = true, + name = "open" + }, + + [19] = { + forward = true, + name = "open" + }, + [20] = { + forward = true, + name = "open" + }, + [21] = { + forward = true, + name = "open" + }, + }, + close_wheels = { + [13] = { + forward = true, + name = "close" + }, + [14] = { + forward = true, + name = "close" + }, + [15] = { + forward = false, + name = "open" + }, + + [16] = { + forward = false, + name = "open" + }, + [17] = { + forward = false, + name = "open" + }, + [18] = { + forward = false, + name = "open" + }, + + [19] = { + forward = false, + name = "open" + }, + [20] = { + forward = false, + name = "open" + }, + [21] = { + forward = false, + name = "open" + }, + } + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 9210, + + }, + }, + metadata = { + airVehicle = { + weight = 57800.0, + maxPayload = 0, + maxTakeOffWeight = 115700.0, + maxThrust = 360000.0, + idleThrust = 18000.0, + timeToFullThrust = 3, + wingArea = 181.3, + topSpeed = 248.611111111, + configs = { + { + axles = { + "vehicle/plane/boeing_757/lod_0_w2.msh", + "vehicle/plane/boeing_757/lod_0_w3.msh" + }, + wheels = { + "vehicle/plane/boeing_757/lod_0_w1.msh", + }, + elevator = { + ids = { 33, 37 }, + maxAngle = 20 + }, + aileronLeft = { + ids = { 32 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 36 }, + maxAngle = 30 + }, + flaps = { + ids = { 34, 35, 38, 39 }, + maxAngle = 20 + }, + rudder = { + ids = { 40 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + description = { + name = _("Boeing 757"), + description = _("The Boeing 757 is the manufacturer's largest single-aisle passenger aircraft and was produced from 1981 to 2004.") + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 220, -- wikipedia: max 239 + } + }, + loadSpeed = 10, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(20.38, 0.6, 0.1)), crew = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(20.38, -0.75, 0.1)), crew = true}, + --passangers + + } + }, + soundConfig = { + soundSet = { name = "aircraft_jet_modern" } + } + }, + +} +end diff --git a/res/models/model/vehicle/plane/comet_4b.mdl b/res/models/model/vehicle/plane/comet_4b.mdl new file mode 100755 index 0000000..476fcdb --- /dev/null +++ b/res/models/model/vehicle/plane/comet_4b.mdl @@ -0,0 +1,428 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 18.67066192627, 16.416221618652, 6.1334609985352, + }, + bbMin = { + -17.215757369995, -16.416221618652, -2.7228879928589, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/plane/comet_4b/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/comet_4b/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.4939, 1.6301, 0.4705, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/comet_4b/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.4939, -1.6301, 0.4705, 1, + }, + type = "MESH", + + }, + + { + id = "vehicle/plane/comet_4b/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + -- Aircraft rudders + { + id = "vehicle/plane/comet_4b/lod_0_aileron.msh", + transf = transf.rotZYXTransl(transf.degToRad(102.156,-3.48,89.112), vec3.new(-2.87, 10.8409, -0.2014)), + type = "MESH", + + }, + { + id = "vehicle/plane/comet_4b/lod_0_elevator.msh", + transf = transf.rotZYXTransl(transf.degToRad(93.435,-11.526,87.23), vec3.new(-15.6666, 0.5026, 1.2072)), + type = "MESH", + + }, + { + id = "vehicle/plane/comet_4b/lod_0_inboard_flap.msh", + transf = transf.rotZYXTransl(transf.degToRad(99.608,-3.78,88.416), vec3.new(-1.8631, 5.9335,-0.52)), + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_outboard_flap.msh", + transf = transf.rotZYXTransl(transf.degToRad(99.608,-3.398,91.499), vec3.new(-2.3895, 9.0431,-0.3242)), + type = "MESH", + + }, { + id = "vehicle/plane/comet_4b/lod_0_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -15.5296, 0, 3.8223, 1, + }, + type = "MESH", + + }, + -- flipped rudders + { + id = "vehicle/plane/comet_4b/lod_0_aileron.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(102.156,-3.48,89.112), vec3.new(-2.87, 10.8409, -0.2014))), + type = "MESH", + + }, { + id = "vehicle/plane/comet_4b/lod_0_elevator.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(93.435,-11.526,87.23), vec3.new(-15.6666, 0.5026, 1.2072))), + type = "MESH", + + }, + { + id = "vehicle/plane/comet_4b/lod_0_inboard_flap.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(99.608,-3.78,88.416), vec3.new(-1.8631, 5.9335,-0.52))), + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_outboard_flap.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(99.608,-3.398,91.499), vec3.new(-2.3895, 9.0431,-0.3242))), + type = "MESH", + + }, + + + -- back wheels + { + id = "vehicle/plane/comet_4b_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.4964, 4.4828, -0.9167, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/plane/comet_4b/lod_0_back_wheel_big_flap.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.0457, 6.3528, -0.7374, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/comet_4b/lod_0_back_wheel_small_flap.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,-80), vec3.new(-0.0093, 4.3823, -0.921)), + type = "MESH", + + }, + { + id = "vehicle/plane/comet_4b_lod_0_back_wheel.grp", + transf = transf.flipY({ + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.4964, 4.4828, -0.9167, 1, + }), + type = "GROUP", + + },{ + id = "vehicle/plane/comet_4b/lod_0_back_wheel_big_flap.msh", + transf = transf.flipY({ + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.0457, 6.3528, -0.7374, 1, + }), + type = "MESH", + + }, { + id = "vehicle/plane/comet_4b/lod_0_back_wheel_small_flap.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,-80), vec3.new(-0.0093, 4.3823, -0.921))), + type = "MESH", + + }, + + -- front wheel + { + id = "vehicle/plane/comet_4b/lod_0_flap_front_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,-4.318,-80), vec3.new(15.9928, 0.4109, -0.9182)), + type = "MESH", + + }, { + id = "vehicle/plane/comet_4b/lod_0_flap_front_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,-4.318,-80), vec3.new(15.9928, -0.4109, -0.9182)), + type = "MESH", + + }, + { + id = "vehicle/plane/comet_4b_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 15.6035, 0, -0.839, 1, + }, + type = "GROUP", + + }, + -- lights + { + id = "vehicle/plane/comet_4b/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_anti_collision_strobo_bottom.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_landing_lights_inside.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_landing_lights_outside.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/comet_4b/lod_0_logo_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -15.5296, 0, 3.8223, 1, + }, + type = "MESH", + + }, + }, + events = { + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + }, + }, + open_doors_right = { + [3] = { + forward = true, + name = "opend2", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + }, + }, + close_doors_right = { + [3] = { + forward = false, + name = "opend2", + }, + }, + open_wheels = { + + [14] = { + forward = true, + name = "open", + }, + [15] = { + forward = true, + name = "open", + }, + [16] = { + forward = true, + name = "open", + }, + + [17] = { + forward = true, + name = "open", + }, + [18] = { + forward = true, + name = "open", + }, + [19] = { + forward = true, + name = "open", + }, + + + [22] = { + forward = true, + name = "open", + }, [21] = { + forward = true, + name = "open", + }, [20] = { + forward = true, + name = "open", + }, + }, + close_wheels = { + [14] = { + forward = false, + name = "open", + }, + [15] = { + forward = true, + name = "open", + }, + [16] = { + forward = true, + name = "close", + }, + + [17] = { + forward = false, + name = "open", + }, + [18] = { + forward = true, + name = "open", + }, + [19] = { + forward = true, + name = "close", + }, + + + [22] = { + forward = false, + name = "open", + }, [21] = { + forward = true, + name = "close", + }, [20] = { + forward = true, + name = "close", + }, + } + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 7730, + + }, + }, + metadata = { + airVehicle = { + weight = 33000.0, + maxPayload = 0, + maxTakeOffWeight = 71600.0, + maxThrust = 188000.0, + idleThrust = 9400.0, + timeToFullThrust = 3, + wingArea = 191.3, + topSpeed = 201.388888889, + configs = { + { + axles = { + "vehicle/plane/comet_4b/lod_0_back_w1.msh", + }, + wheels = { + "vehicle/plane/comet_4b/lod_0_front_w1.msh", + }, + elevator = { + ids = { 6, 11 }, + maxAngle = 20 + }, + aileronLeft = { + ids = { 5 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 10 }, + maxAngle = 30 + }, + flaps = { + ids = { 7, 8, 12, 13 }, + maxAngle = 35 + }, + rudder = { + ids = { 9,43 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 1960, + yearTo = 1967 + }, + cost = { + price = -1 + }, + description = { + name = _("De Havilland Comet 4B"), + description = _("Originally developed for Capital Airlines as the 4A, the 4B featured greater capacity through a 2m longer fuselage, and a shorter wingspan.") + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 85, -- wikipedia + } + }, + loadSpeed = 4, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(16.7, 0.39, -0.26)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_jet_old" } + } + } +} +end diff --git a/res/models/model/vehicle/plane/concorde.mdl b/res/models/model/vehicle/plane/concorde.mdl new file mode 100755 index 0000000..0a5276a --- /dev/null +++ b/res/models/model/vehicle/plane/concorde.mdl @@ -0,0 +1,527 @@ +local vec3 = require "vec3" +local transf = require "transf" + + +-- transf = transf.rotZYXTransl(transf.degToRad(179.382,0.054,44.205), vec3.new(18.423, 0.432, -0.819+4)), +-- transf.flipY() + + +function data() +return { + boundingInfo = { + bbMax = { + 35.955730438232, 12.800143241882, 12.222454071045, + }, + bbMin = { + -24.32844543457, -12.800143241882, -0.33479624986649, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + -- Body + { + id = "vehicle/plane/concorde/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 23.7473, 1.3694, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.9035, 1.3894, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.8979, 1.3629, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 23.7473, -1.3694, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_d5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.9035, -1.3894, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_d6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.8979, -1.3629, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_nose.msh", + transf = transf.rotZYXTransl(transf.degToRad(-90,0,90), vec3.new(28.5702, 0, 0.0691+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_nose_window.msh", + transf = transf.rotZYXTransl(transf.degToRad(-90,0,90), vec3.new(27.8155, 0, 0.2827+4)), + type = "MESH", + + }, + -- back wheels + { + id = "vehicle/plane/concorde/lod_0_flap_back_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,-1.784,-46.358), vec3.new(-0.5968, 3.9065, -0.1049+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_flap_back_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,90), vec3.new(-0.2251, 0.075, -0.5258+4)), + type = "MESH", + + }, + { + id = "vehicle/plane/concorde/lod_0_back_wheel_mount_left_strut.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.2207, 1.3113, -0.0756+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde_lod_0_back_wheel.grp", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.0934, 3.7455, 0.0552+4)), + type = "GROUP", + + }, + + -- back wheels mirrored + { + id = "vehicle/plane/concorde/lod_0_flap_back_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,-1.784,-46.358), vec3.new(-0.5968, 3.9065, -0.1049+4))), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_flap_back_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,90), vec3.new(-0.2251, 0.075, -0.5258+4))), + type = "MESH", + + },{ + id = "vehicle/plane/concorde/lod_0_back_wheel_mount_left_strut.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.2207, 1.3113, -0.0756+4))), + type = "MESH", + + },{ + id = "vehicle/plane/concorde_lod_0_back_wheel.grp", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.0934, 3.7455, 0.0552+4))), + type = "GROUP", + + }, + + -- end wheel + { + id = "vehicle/plane/concorde/lod_0_flap_tail_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,10.618,46.368), vec3.new(-18.8415, 0.1937, 1.1772+4)), + type = "MESH", + + },{ + id = "vehicle/plane/concorde/lod_0_flap_tail_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,10.618,46.368), vec3.new(-18.8415, 0.1937, 1.1772+4))), + type = "MESH", + + },{ + id = "vehicle/plane/concorde_lod_0_tail_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -17.5255, 0, 1.0068+4, 1, + }, + type = "GROUP", + + }, + -- front wheels + { + id = "vehicle/plane/concorde/lod_0_flap_front_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(20.6553, 0.5019, -0.3512+4)), + type = "MESH", + + }, { -- CLOSE not open anim + id = "vehicle/plane/concorde/lod_0_flap_front_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,-65), vec3.new(17.7644, 0.5019, -0.3512+4)), + type = "MESH", + + },{ + id = "vehicle/plane/concorde/lod_0_flap_front_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(20.6553, 0.5019, -0.3512+4))), + type = "MESH", + + }, { -- CLOSE not open anim + id = "vehicle/plane/concorde/lod_0_flap_front_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,-65), vec3.new(17.7644, 0.5019, -0.3512+4))), + type = "MESH", + + }, { + id = "vehicle/plane/concorde_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 17.5105, 0, 0.2064+4, 1, + }, + type = "GROUP", + + }, + -- Aircraft rudders + { + id = "vehicle/plane/concorde/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,10.887,-262.65), vec3.new(-9.2316, 9.3404, -0.0929+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_aileron_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,-10.887,97.35), vec3.new(-9.2316, -9.3404, -0.0929+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_inboard_flap_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,4.778,91.76), vec3.new(-9.2316, 8.1387, 0.0076+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_inboard_flap_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new( -9.2316, 2.9728, 0.208+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_inboard_flap_right1.msh", + transf = transf.rotZYXTransl(transf.degToRad(-270,-4.778,91.76), vec3.new(-9.2316, -8.1387, 0.0076+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_inboard_flap_right2.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-9.2316, -2.9728, 0.208+4)), + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_rudder_bottom.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -17.8003, 0, 2.5222+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_rudder_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -17.8003, 0, 4.9894+4, 1, + }, + type = "MESH", + + }, + -- lights + + { + id = "vehicle/plane/concorde/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+4, 1, + }, + type = "MESH", + },{ + id = "vehicle/plane/concorde/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+4, 1, + }, + type = "MESH", + },{ + id = "vehicle/plane/concorde/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+4, 1, + }, + type = "MESH", + },{ + id = "vehicle/plane/concorde/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+4, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/concorde/lod_0_logo_rudder_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -17.8003, 0, 4.9894+4, 1, + }, + type = "MESH", + + }, + }, + events = { + open_wheels = { + + [11] = { + forward = true, + name = "open", + }, + [12] = { + forward = true, + name = "open", + }, + [13] = { + forward = true, + name = "open", + }, + [14] = { + forward = true, + name = "open", + }, + [15] = { + forward = true, + name = "open", + }, + [16] = { + forward = true, + name = "open", + }, + [17] = { + forward = true, + name = "open", + }, + [18] = { + forward = true, + name = "open", + }, + [19] = { + forward = true, + name = "open", + }, + [20] = { + forward = true, + name = "open", + }, + [21] = { + forward = true, + name = "open", + }, + [22] = { + forward = true, + name = "open", + }, + [23] = { + forward = true, + name = "open", + }, + [24] = { + forward = true, + name = "open", + }, + [25] = { + forward = true, + name = "open", + }, + [26] = { + forward = true, + name = "open", + }, + }, + close_wheels = { + + [11] = { + forward = false, + name = "open", + }, + [12] = { + forward = false, + name = "open", + }, + + [13] = { + forward = false, + name = "open", + }, + [14] = { + forward = false, + name = "open", + }, + [15] = { + forward = false, + name = "open", + }, + [16] = { + forward = false, + name = "open", + }, + [17] = { + forward = false, + name = "open", + }, + [18] = { + forward = false, + name = "open", + }, + [19] = { + forward = false, + name = "open", + }, + [20] = { + forward = false, + name = "open", + }, + [21] = { + forward = false, + name = "open", + }, + [22] = { + forward = false, + name = "open", + }, + [23] = { + forward = true, + name = "close", + }, + [24] = { + forward = false, + name = "open", + }, + [25] = { + forward = true, + name = "close", + }, + [26] = { + forward = false, + name = "open", + }, + + }, + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + }, + }, + open_doors_right = { + [5] = { + forward = true, + name = "opend4", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + }, + }, + close_doors_right = { + [5] = { + forward = false, + name = "opend4", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 7430, + + }, + }, + metadata = { + airVehicle = { + weight = 78700.0, + maxPayload = 0, + maxTakeOffWeight = 187000.0, + maxThrust = 560000.0, + idleThrust = 28000.0, + timeToFullThrust = 5, + wingArea = 358, + topSpeed = 599.444444444, + configs = { + { + axles = { + "vehicle/plane/concorde/lod_0_w2.msh", + "vehicle/plane/concorde/lod_0_w3.msh", + }, + wheels = { + "vehicle/plane/concorde/lod_0_w1.msh", + }, + elevator = { + ids = { 44, 45, 46, 47 }, + maxAngle = 15 + }, + aileronLeft = { + ids = { 42 }, + maxAngle = 15 + }, + aileronRight = { + ids = { 43 }, + maxAngle = 15 + }, + flaps = { + ids = { 9, 10, 44, 45, 46, 47 }, + maxAngle = 12.5 + }, + rudder = { + ids = { 48, 49, 54 }, + maxAngle = 20 + } + } + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + description = { + name = _("Concorde"), + description = _("The Concorde is a British-French turbojet-powered supersonic passenger jet airliner that was operated until 2003.") + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 95, -- AirFrance, wikipedia + } + }, + loadSpeed = 4, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(28.2, 0.45, 0.28)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "concorde" } + } + } +} +end diff --git a/res/models/model/vehicle/plane/dornier_b_merkur.mdl b/res/models/model/vehicle/plane/dornier_b_merkur.mdl new file mode 100755 index 0000000..7b02965 --- /dev/null +++ b/res/models/model/vehicle/plane/dornier_b_merkur.mdl @@ -0,0 +1,223 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 4.0987110137939, 9.8033895492554, 4.0756769180298, + }, + bbMin = { + -8.8827104568481, -9.8033895492554, -0.045518010854721, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/plane/dornier_b_merkur/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.1219, 0.7326, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/dornier_b_merkur/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-1.0298, 4.454, 1.1375+2)), + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_aileron_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-1.0298, -4.454, 1.1375+2)), + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_elevator.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-8.1202, 0, 0.4191+2)), + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_rotor.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5057, 0, 0.0795+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.8998, 0, 1.5568+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.812, -1.1339, -1.5584+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0.812, 1.1339, -1.5584+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_w3.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-7.25, 0, 1.6)), + type = "MESH", + + }, { + id = "vehicle/plane/dornier_b_merkur/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/dornier_b_merkur/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/dornier_b_merkur/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/dornier_b_merkur/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, + + }, + events = { + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 3270, + + }, + }, + metadata = { + airVehicle = { + weight = 2300.0, + maxPayload = 0, + maxTakeOffWeight = 3700.0, + maxThrust = 8000.0, + idleThrust = 0.0, + timeToFullThrust = 3, + power = 500, + wingArea = 64, + topSpeed = 48.6111111111, + configs = { + { + axles = { + "vehicle/plane/dornier_b_merkur/lod_0_w1.msh" + }, + wheels = { + "vehicle/plane/junkers_f_13/lod_0_w3.msh" + }, + elevator = { + ids = { 5 }, + maxAngle = 30 + }, + aileronLeft = { + ids = { 3 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 4 }, + maxAngle = 30 + }, + props = { + ids = { 6 } + }, + rudder = { + ids = { 7 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 1925, + yearTo = 1960 + }, + cost = { + price = -1 + }, + description = { + name = _("Dornier Merkur"), + description = _("The Dornier Merkur was a German passenger aircraft, built in the Dornier factories in Friedrichshafen.") + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 20, -- wikipedia: 6 + } + }, + loadSpeed = 1, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.55, 0.22, -0.26)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_prop_old" } + } + } +} +end diff --git a/res/models/model/vehicle/plane/douglas_dc3.mdl b/res/models/model/vehicle/plane/douglas_dc3.mdl new file mode 100755 index 0000000..512ae92 --- /dev/null +++ b/res/models/model/vehicle/plane/douglas_dc3.mdl @@ -0,0 +1,312 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 5.9152231216431, 14.999654769897, 5.1760401725769, + }, + bbMin = { + -14.783146858215, -15.000291824341, -2.4586050510406, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/plane/douglas_dc3/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.4883, 1.2115, 0.9232, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.4882, -1.2118, 0.9232, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.9394, 0, -0.3704, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_elevator.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-13.4067, 0, 1.5292)), + + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(93.1955,-7.3464,92.6335), vec3.new(-3.1911, 10.2588, 0.6605)), + + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_aileron_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(86.808,7.269,92.638), vec3.new(-3.1911, -10.2588, 0.6465)), + + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc3/lod_0_inboard_flap.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-2.7608, 0, -0.309)), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_outboard_flap_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(94.642,-7.902,85.991), vec3.new(-2.876, 5.2532,-0.0579)), + + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_outboard_flap_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(85.365,7.51,85.6161), vec3.new(-2.8759, -5.2526,-0.0624)), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_rotor1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.0102, -2.9669, 0.0112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_rotor2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.0101, 2.9691, 0.0152, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -12.9493, 0, 4.0397, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11.9626, 0, 0.3711, 1, + }, + type = "MESH", + + }, + -- lights + + { + id = "vehicle/plane/douglas_dc3/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/douglas_dc3/lod_0_landing_lights.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/douglas_dc3/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/douglas_dc3/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/douglas_dc3/lod_0_navigation_light_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc3/lod_0_logo_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -12.9493, 0, 4.0397, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc3/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + close_wheels = { + [5] = { + forward = true, + name = "open", + }, + }, + open_wheels = { + [5] = { + forward = false, + name = "open", + }, + + }, + open_doors_left = { + [3] = { + forward = true, + name = "opend1", + }, + }, + open_doors_right = { + [4] = { + forward = true, + name = "opend2", + }, + }, + close_doors_left = { + [3] = { + forward = false, + name = "opend1", + }, + }, + close_doors_right = { + [4] = { + forward = false, + name = "opend2", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 5170, + + }, + }, + metadata = { + airVehicle = { + weight = 7700.0, + maxPayload = 0, + maxTakeOffWeight = 11400.0, + maxThrust = 25000.0, + idleThrust = 0.0, + timeToFullThrust = 3, + power = 1700, + wingArea = 91.7, + topSpeed = 92.5, + configs = { + { + axles = { + "vehicle/plane/douglas_dc3/lod_0_w2.msh", + }, + wheels = { + "vehicle/plane/douglas_dc3/lod_0_w1.msh", + }, + elevator = { + ids = { 10 }, + maxAngle = 30 + }, + aileronLeft = { + ids = { 11 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 12 }, + maxAngle = 30 + }, + flaps = { + ids = { 13, 14, 15 }, + maxAngle = 30 + }, + props = { + ids = { 16, 17 } + }, + rudder = { + ids = { 18,25 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 1935, + yearTo = 1967 + }, + cost = { + price = -1 + }, + description = { + name = _("Douglas DC-3"), + description = _("The Douglas DC-3 is a fixed-wing propeller-driven airliner. Its cruise speed and range revolutionized air transport in the 1930s and 1940s.") + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 32, -- wikipedia + } + }, + loadSpeed = 2, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, 0.35, 0.4)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_prop_modern" } + } + } +} +end diff --git a/res/models/model/vehicle/plane/douglas_dc4.mdl b/res/models/model/vehicle/plane/douglas_dc4.mdl new file mode 100755 index 0000000..c9b6b62 --- /dev/null +++ b/res/models/model/vehicle/plane/douglas_dc4.mdl @@ -0,0 +1,464 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 11.156785964966, 17.897922515869, 9.5514421463013, + }, + bbMin = { + -17.841180801392, -17.897922515869, -0.0012209415435791, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/plane/douglas_dc4/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.3957, 1.5736, 1.609+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -6.3957, -1.5736, 1.609+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_rotor_1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7615, -7.9967, 1.211+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_rotor_1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.1918, -3.7889, 0.7079+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_rotor_1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7615, 7.9967, 1.211+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_rotor_1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.1918, 3.7889, 0.7079+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, + + -- wheels + { + id = "vehicle/plane/douglas_dc4/lod_0_flap_front_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(-180,16.9551,-80), vec3.new(9.2647, 0.4019, 0.3443+2)), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_flap_front_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(-180,16.9551,-80), vec3.new(9.2647, -0.4019, 0.3443+2)), + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8.1562, 0, 0.4795+2, 1, + }, + type = "GROUP", + + }, + + + { + id = "vehicle/plane/douglas_dc4/lod_0_back_wheel_mount1_flap.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.1419, 3.7889, -0.0414+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_flap_back_left_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5775, 4.3023, 0.104+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_flap_back_left_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5775, 3.2756, 0.104+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 3.7889, 0.3252+2, 1, + }, + type = "GROUP", + + }, + + + + { + id = "vehicle/plane/douglas_dc4/lod_0_back_wheel_mount1_flap.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -0.1419, -3.7889, -0.0414+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_flap_back_left_left.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.5775, -4.3023, 0.104+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_flap_back_left_right.msh", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.5775, -3.2756, 0.104+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4_lod_0_back_wheel.grp", + transf = { + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, -3.7889, 0.3252+2, 1, + }, + type = "GROUP", + + }, + + -- Aircraft rudders + { + id = "vehicle/plane/douglas_dc4/lod_0_aileron_left.msh", + + transf = transf.rotZYXTransl(transf.degToRad(-274.398,-7.434,-269.273), vec3.new(-0.7108, 13.3219, 1.7098+2)), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_inboard_flap_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(-275.343,-7.5898,90), vec3.new(-1.605, 4.3023, 0.4863+2)), + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4/lod_0_aileron_left.msh", + + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(-274.398,-7.434,-269.273), vec3.new(-0.7108, 13.3219, 1.7098+2))), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_inboard_flap_left.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(-275.343,-7.5898,90), vec3.new(-1.605, 4.3023, 0.4863+2))), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_elevator.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-14.9954, 0, 2.0716+2)), + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -15.3562, 0, 3.0529+2, 1, + }, + type = "MESH", + + }, + + + -- lights + { + id = "vehicle/plane/douglas_dc4/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + },{ + id = "vehicle/plane/douglas_dc4/lod_0_navigation_light_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/douglas_dc4/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2, 1, + }, + type = "MESH", + + }, + + }, + events = { + open_wheels = { + [9] = { + forward = true, + name = "open", + }, + [10] = { + forward = true, + name = "open", + }, + [11] = { + forward = true, + name = "open", + }, + + + [12] = { + forward = true, + name = "switch", + }, + [13] = { + forward = true, + name = "open", + }, + [14] = { + forward = true, + name = "open", + }, + [15] = { + forward = true, + name = "open", + }, + [16] = { + forward = true, + name = "switch", + }, + [17] = { + forward = true, + name = "open", + }, + [18] = { + forward = true, + name = "open", + }, + [19] = { + forward = true, + name = "open", + }, + + + }, + close_wheels = { + [9] = { + forward = true, + name = "close", + }, + [10] = { + forward = true, + name = "close", + }, + [11] = { + forward = true, + name = "close", + }, + + [12] = { + forward = false, + name = "switch", + }, + [13] = { + forward = true, + name = "close", + }, + [14] = { + forward = true, + name = "close", + }, + [15] = { + forward = true, + name = "close", + }, + [16] = { + forward = false, + name = "switch", + }, + [17] = { + forward = true, + name = "close", + }, + [18] = { + forward = true, + name = "close", + }, + [19] = { + forward = true, + name = "close", + }, + + }, + + + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + }, + }, + + open_doors_right = { + [3] = { + forward = true, + name = "opend1", + }, + }, + close_doors_right = { + [3] = { + forward = false, + name = "opend1", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 6990, + + }, + }, + metadata = { + airVehicle = { + weight = 19600.0, + maxPayload = 0, + maxTakeOffWeight = 33100.0, + maxThrust = 70000.0, + idleThrust = 0.0, + timeToFullThrust = 3, + power = 0, + wingArea = 135.6, + topSpeed = 101.388888889, + configs = { + { + axles = { + "vehicle/plane/douglas_dc4/lod_0_w2.msh", + }, + wheels = { + "vehicle/plane/douglas_dc4/lod_0_w1.msh", + }, + elevator = { + ids = { 32 }, + maxAngle = 20 + }, + aileronLeft = { + ids = { 28 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 30 }, + maxAngle = 30 + }, + flaps = { + ids = { 9, 10, 15, 16, 22, 23, 29, 31 }, + maxAngle = 30 + }, + props = { + ids = { 4, 5, 6, 7 } + }, + rudder = { + ids = { 33 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 1944, + yearTo = 1967 + }, + cost = { + price = -1 + }, + description = { + name = _("Douglas DC-4"), + description = _("The Douglas DC-4 is a four-engine (piston) propeller-driven airliner developed by the Douglas Aircraft Company. From 1945, many civil airlines operated it worldwide.") + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 60, + } + }, + loadSpeed = 2, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.8, 0.65, 1.2)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_prop_modern" } + } + } +} +end diff --git a/res/models/model/vehicle/plane/junkers_f_13.mdl b/res/models/model/vehicle/plane/junkers_f_13.mdl new file mode 100755 index 0000000..db9947d --- /dev/null +++ b/res/models/model/vehicle/plane/junkers_f_13.mdl @@ -0,0 +1,219 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 2.5336039066315, 7.4893770217896, 1.5860749483109, + }, + bbMin = { + -5.4609370231628, -7.4893770217896, -1.0071635246277, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/plane/junkers_f_13/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_d1.msh", + transf = transf.rotZYXTransl(transf.degToRad(-4.509,-102.845,138.747), vec3.new(-0.2883, 0.5891, 0.8249)), + type = "MESH",v + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_d2.msh", + transf = transf.rotZYXTransl(transf.degToRad(-4.509,-102.845,138.747), vec3.new(-0.2883, -0.5891, 0.8249)), + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_aileron_left.msh", + transf = transf.rotZYXTransl(transf.degToRad(-100.501,-174.599,-91.3586), vec3.new(-0.545, 5.312, 0.309)), + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_aileron_right.msh", + transf = transf.rotZYXTransl(transf.degToRad(-79.499,174.5992,-91.359), vec3.new(-0.545, -5.312, 0.309)), + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_elevator.msh", + transf = transf.rotZYXTransl(transf.degToRad(-90,-180.1739,-90), vec3.new(-4.6621, 0, 0.7878)), + + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_rotor.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2812, 0, 0.6181, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.861, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_w3.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-4.5444, 0, -0.0802)), + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_w1.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,1.499), vec3.new(0.689, 0.98, -0.641)), + type = "MESH", + + }, { + id = "vehicle/plane/junkers_f_13/lod_0_w2.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,-1.499), vec3.new(0.689, -0.98, -0.641)), + type = "MESH", + + }, + { + id = "vehicle/plane/junkers_f_13/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_doors_left = { + [3] = { + forward = true, + name = "opend1", + }, + }, + open_doors_right = { + [4] = { + forward = true, + name = "opend2", + }, + }, + close_doors_left = { + [3] = { + forward = false, + name = "opend1", + }, + }, + close_doors_right = { + [4] = { + forward = false, + name = "opend2", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 2140, + + }, + }, + metadata = { + airVehicle = { + weight = 1000.0, + maxPayload = 0, + maxTakeOffWeight = 1800.0, + maxThrust = 3500.0, + idleThrust = 0.0, + timeToFullThrust = 3, + power = 228, + wingArea = 34.5, + topSpeed = 38.8888888889, + configs = { + { + axles = { + "vehicle/plane/junkers_f_13/lod_0_w1.msh" + }, + wheels = { + "vehicle/plane/junkers_f_13/lod_0_w3.msh" + }, + elevator = { + ids = { 7 }, + maxAngle = 30 + }, + aileronLeft = { + ids = { 5 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 6 }, + maxAngle = 30 + }, + props = { + ids = { 8 } + }, + rudder = { + ids = { 9 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 1920, + yearTo = 1950 + }, + cost = { + price = -1 + }, + description = { + name = _("Junkers F 13"), + description = _("The Junkers F 13 was the world's first all-metal transport aircraft, developed in Germany at the end of World War I.") + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 12, -- wikipedia: 4 + } + }, + loadSpeed = 1, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, -25.0, 0.0), vec3.new(0.27, 0.15, -0.218)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_prop_old" } + } + } +} +end diff --git a/res/models/model/vehicle/plane/super_connie.mdl b/res/models/model/vehicle/plane/super_connie.mdl new file mode 100755 index 0000000..94ce1b0 --- /dev/null +++ b/res/models/model/vehicle/plane/super_connie.mdl @@ -0,0 +1,545 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 14.125260353088, 18.76124382019, 8.2268190383911, + }, + bbMin = { + -21.242317199707, -18.76124382019, -0.10195410251617, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + -- Body + + { + id = "vehicle/plane/super_connie/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.7727, 0, 0+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.0748, 0, 0+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.7727, 0, 0+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.0748, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_rotor1.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(3.1649, 9.102, 0.6674+2.8)), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_rotor2.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(3.5654, -4.2845, 0.1352+2.8)), + type = "MESH", + + },{ + id = "vehicle/plane/super_connie/lod_0_rotor1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(3.1649, 9.102, 0.6674+2.8))), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_rotor2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(3.5654, -4.2845, 0.1352+2.8))), + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + -- front wheels + { + id = "vehicle/plane/super_connie/lod_0_flap_front_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8.6123, 0.5154, -0.3604+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_front_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8.6123, -0.5154, -0.3604+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie_lod_0_front_wheel.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 11.1576, 0, -0.3479+2.8, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/plane/super_connie/lod_0_front_wheel_mount_strut.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.3643, 0, 0.5488+2.8, 1, + }, + type = "MESH", + + }, + -- back wheels + { + id = "vehicle/plane/super_connie_lod_0_back_wheel.grp", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-2.0474, 4.2847, 0.3222+2.8)), + type = "GROUP", + + }, + { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_left_back.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-1.6849, 4.8547, -0.3414+2.8)), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_left_front.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.0944, 4.8619, -0.3907+2.8)), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_right_back.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-1.6849, 3.7147, -0.3414+2.8)), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_right_front.msh", + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.0944, 3.7052, -0.3919+2.8)), + type = "MESH", + + }, + -- back wheels mirrored + { + id = "vehicle/plane/super_connie_lod_0_back_wheel.grp", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-2.0474, 4.2847, 0.3222+2.8))), + type = "GROUP", + + }, + { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_left_back.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-1.6849, 4.8547, -0.3414+2.8))), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_left_front.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.0944, 4.8619, -0.3907+2.8))), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_right_back.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-1.6849, 3.7147, -0.3414+2.8))), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_flap_back_left_right_front.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-0.0944, 3.7052, -0.3919+2.8))), + type = "MESH", + + }, + + + -- Aircraft rudders + { + id = "vehicle/plane/super_connie/lod_0_aileron_left.msh", + + transf = transf.rotZYXTransl(transf.degToRad(90,-6.714,90.007), vec3.new(-2.6105, 14.1795, 1.3078+2.8)), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_aileron_left.msh", + + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(90,-6.714,90.007), vec3.new(-2.6105, 14.1795, 1.3078+2.8))), + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_elevator.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,0,90), vec3.new(-19.807, 0, 2.3763+2.8)), + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_inboard_flap_left1.msh", + transf = transf.rotZYXTransl(transf.degToRad(85.8,-7.4329,88.2698), vec3.new(-3.0228, 4.8729, 0.0747+2.8)), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_inboard_flap_left2.msh", + transf = transf.rotZYXTransl(transf.degToRad(90,-2.2817,78.5972), vec3.new(-3.2113, 1.2298, -0.2665+2.8)), + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_inboard_flap_left1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(85.8,-7.4329,88.2698), vec3.new(-3.0228, 4.8729, 0.0747+2.8))), + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_inboard_flap_left2.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(90,-2.2817,78.5972), vec3.new(-3.2113, 1.2298, -0.2665+2.8))), + type = "MESH", + + }, + + + { + id = "vehicle/plane/super_connie/lod_0_rudder.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -19.8591, 0, 2.3763+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_rudder_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -20.0068, 6.441, 2.3763+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_rudder_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -20.0068, -6.441, 2.3763+2.8, 1, + }, + type = "MESH", + + }, + -- lights + { + id = "vehicle/plane/super_connie/lod_0_aft_light.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_navigation_light_bottom.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_navigation_light_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_navigation_light_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_navigation_light_top.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/plane/super_connie/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_logo_rudder_left.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -20.0068, 6.441, 2.3763+2.8, 1, + }, + type = "MESH", + + }, { + id = "vehicle/plane/super_connie/lod_0_logo_rudder_right.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -20.0068, -6.441, 2.3763+2.8, 1, + }, + type = "MESH", + + }, + }, + events = { + open_doors_left = { + [2] = { + forward = true, + name = "opend1", + },[3] = { + forward = true, + name = "opend2", + }, + }, + close_doors_left = { + [2] = { + forward = false, + name = "opend1", + },[3] = { + forward = false, + name = "opend2", + }, + }, + open_wheels = { + + [11] = { + forward = true, + name = "open", + }, + [12] = { + forward = true, + name = "open", + }, + [13] = { + forward = true, + name = "open", + }, + [14] = { + forward = true, + name = "open", + }, + [15] = { + forward = true, + name = "open", + }, + + + [16] = { + forward = true, + name = "open", + }, + [17] = { + forward = true, + name = "open", + }, + [18] = { + forward = true, + name = "open", + }, + [19] = { + forward = true, + name = "open", + }, + [20] = { + forward = true, + name = "open", + }, + [21] = { + forward = true, + name = "open", + }, + [22] = { + forward = true, + name = "open", + }, + [23] = { + forward = true, + name = "open", + }, + [24] = { + forward = true, + name = "open", + }, + }, + close_wheels = { + + [11] = { + forward = false, + name = "open", + }, + [12] = { + forward = false, + name = "open", + }, + [13] = { + forward = false, + name = "open", + }, + [14] = { + forward = false, + name = "open", + }, + [15] = { + forward = false, + name = "open", + }, + [16] = { + forward = false, + name = "open", + }, + [17] = { + forward = false, + name = "open", + }, + [18] = { + forward = false, + name = "open", + }, + [19] = { + forward = false, + name = "open", + }, + [20] = { + forward = false, + name = "open", + }, + [21] = { + forward = false, + name = "open", + }, + [22] = { + forward = false, + name = "open", + }, + [23] = { + forward = false, + name = "open", + }, + [24] = { + forward = false, + name = "open", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 8270, + + }, + }, + metadata = { + airVehicle = { + weight = 31300.0, + maxPayload = 0, + maxTakeOffWeight = 54400.0, + maxThrust = 150000.0, + idleThrust = 0.0, + timeToFullThrust = 3, + power = 0, + wingArea = 153.3, + topSpeed = 135.833333333, + configs = { + { + axles = { + "vehicle/plane/super_connie/lod_0_w2.msh", + "vehicle/plane/super_connie/lod_0_w3.msh", + }, + wheels = { + "vehicle/plane/super_connie/lod_0_w1.msh", + }, + elevator = { + ids = { 37 }, + maxAngle = 25 + }, + aileronLeft = { + ids = { 35 }, + maxAngle = 30 + }, + aileronRight = { + ids = { 36}, + maxAngle = 30 + }, + flaps = { + ids = { 38,39,40,41 }, + maxAngle = 30 + }, + props = { + ids = { 6,7,8,9 } + }, + rudder = { + ids = { 42, 43, 44, 51, 52 }, + maxAngle = 30 + } + } + } + }, + availability = { + yearFrom = 1952, + yearTo = 1967 + }, + cost = { + price = -1 + }, + description = { + name = _("Lockheed Super Constellation"), + description = _("The Lockheed L-1049 Super Constellation is an American aircraft, a member of the Lockheed Constellation aircraft line.") + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + }, + transportVehicle = { + carrier = "AIR", + capacities = { + { + type = "PASSENGERS", + capacity = 90, + } + }, + loadSpeed = 4, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(10.9, 0.5, 0.35)), crew = true}, + } + }, + soundConfig = { + soundSet = { name = "aircraft_prop_modern" } + } + } +} +end diff --git a/res/models/model/vehicle/train/a3_5_705.mdl b/res/models/model/vehicle/train/a3_5_705.mdl new file mode 100755 index 0000000..d618447 --- /dev/null +++ b/res/models/model/vehicle/train/a3_5_705.mdl @@ -0,0 +1,129 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/a3_5_705_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/a3_5_705_lod_0_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.3599, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/a3_5_705_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0275, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + } + + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1700, + + }, + }, + metadata = { + description = { + name = _("A 3/5"), + description = _("This 4-6-0 locomotive was the first really fast locomotive of the Jura-Simplon and the Gotthard line.") + }, + railVehicle = { + topSpeed = 100, + weight = 107, + engines = { + { type = "STEAM", power = 1000, tractiveEffort = 120 } + }, + configs = { + { + axles = { + "vehicle/train/a3_5_705/lod_0_w1.msh", + "vehicle/train/a3_5_705/lod_0_w2.msh", + "vehicle/train/a3_5_705/lod_0_w3.msh", + "vehicle/train/a3_5_705/lod_0_w4.msh" + } + } + }, + soundSet = { name = "train_steam_modern", horn = "vehicle/train_steam_old/steam_horn_20.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.3, -.9, 1.52)), crew = true, standing = true}, + }, + }, + availability = { + yearFrom = 1902, + yearTo = 1949 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + }, + particleSystem = { + emitters = { + { + position = {5.0613, .0, 4.4544}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.5735, 1.321, 0.6688 }, + velocity = { .0, 4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.5735, -1.321, 0.6688 }, + velocity = { .0, -4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/ae_4_7.mdl b/res/models/model/vehicle/train/ae_4_7.mdl new file mode 100755 index 0000000..ef7b8a4 --- /dev/null +++ b/res/models/model/vehicle/train/ae_4_7.mdl @@ -0,0 +1,273 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 8.5573291778564, 1.5480879545212, 5.8759250640869, + }, + bbMin = { + -8.5573291778564, -1.5480879545212, -0.90987700223923, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/ae_4_7/lod_2_ae_4-7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2051, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.2644, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6763, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.617, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.5274, 0, 0.5345, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3279, 0, 0.5345, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.0669, 0, 0.5345, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 1870, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/ae_4_7/lod_1_ae_4-7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2051, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.2644, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6763, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.617, 0, 0.8306, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.5274, 0, 0.5345, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3279, 0, 0.5345, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/ae_4_7/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.0669, 0, 0.5345, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 350, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/ae_4_7_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/ae_4_7_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.5259, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/ae_4_7_lod_0_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.0669, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 150, + + }, + }, + metadata = { + + + + description = { + name = _("Ae 4/7"), + description = _("A universal locomotive from Switzerland, very long-lasting thanks to the so-called Buchli drive.") + }, + + + railVehicle = { + + topSpeed = 100, + weight = 121, + engines = { + { type = "ELECTRIC", power = 2300, tractiveEffort = 196 } + }, + configs = { + { + }, + { + axles = { + "vehicle/train/ae_4_7/lod_1_w1.msh", + "vehicle/train/ae_4_7/lod_1_w2.msh", + } + }, + { + axles = { + "vehicle/train/ae_4_7/lod_0_w1.msh", + "vehicle/train/ae_4_7/lod_0_w2.msh", + } + } + }, + soundSet = { name = "train_electric_old", horn = "vehicle/train_steam_old/steam_horn_12.wav" } + }, + transportVehicle = { + + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.88, -0.6, 1.68)), crew = true, standing = true}, + }, + carrier = "RAIL" + }, + + availability = { + yearFrom = 1927, + yearTo = 1949 + }, + cost = { + price = -1 + + }, + maintenance = { + runningCosts = -1, + lifespan = 45 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/borsig_1860.mdl b/res/models/model/vehicle/train/borsig_1860.mdl new file mode 100755 index 0000000..3a48829 --- /dev/null +++ b/res/models/model/vehicle/train/borsig_1860.mdl @@ -0,0 +1,122 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/borsig_1860_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/borsig_1860_lod_0_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.8124, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + } + + }, + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1320, + + }, + }, + metadata = { + description = { + name = _("Borsig"), + description = _("Borsig was a German company based in Berlin. For that time it was a very competitive model, but it was still manufactured without a roofed cabine.") + }, + railVehicle = { + topSpeed = 45, + weight = 32, + engines = { + { type = "STEAM", power = 90, tractiveEffort = 20 } + }, + configs = { + { + axles = { + "vehicle/train/borsig_1860/lod_0_w1.msh", + "vehicle/train/borsig_1860/lod_0_w2.msh", + "vehicle/train/borsig_1860/lod_0_w4.msh", + } + } + }, + soundSet = { name = "train_steam_old", horn = "vehicle/train_steam_old/steam_horn_6.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.4, 0.6, 1.2)), crew = true, standing = true}, + }, + }, + availability = { + yearFrom = 1862, + yearTo = 1866 + }, + cost = { + price = -1 + + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + particleSystem = { + emitters = { + { + position = { 2.6578, .0, 4.1311}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.0035, 0.4482, .0 }, + velocity = { .0, 4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.0035, -0.4482, .0 }, + velocity = { .0, -4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/br53_preus_g3.mdl b/res/models/model/vehicle/train/br53_preus_g3.mdl new file mode 100755 index 0000000..5d36f86 --- /dev/null +++ b/res/models/model/vehicle/train/br53_preus_g3.mdl @@ -0,0 +1,140 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 7.5803556442261, 1.5251049995422, 4.1649751663208, + }, + bbMin = { + -7.5355091094971, -1.5251049995422, -0.025150001049042, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/train/br53preusg3_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/br53preusg3_lod_0_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.4561, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + } + + }, + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1480, + + }, + }, + metadata = { + description = { + name = _("Class 53 Prussian G 3"), + description = _( + "The Class G 3 was a family of six-coupled, medium-powered, freight train, tank locomotives.") + }, + railVehicle = { + topSpeed = 50, + weight = 38, + engines = { + { type = "STEAM", power = 160, tractiveEffort = 60 } + }, + configs = { + { + axles = { + "vehicle/train/br53_preus_g3/lod_0_w1.msh", + "vehicle/train/br53_preus_g3/lod_0_w2.msh", + "vehicle/train/br53_preus_g3/lod_0_w3.msh", + } + } + }, + soundSet = "train_steam_old" + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, -.9, 1.22)), crew = true, standing = true}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + particleSystem = { + emitters = { + { + position = { 5.857, .0, 4.165}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 5.4388, 1.4608, .0 }, + velocity = { .0, 4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 5.4388, -1.4608, .0 }, + velocity = { .0, -4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/br75_4.mdl b/res/models/model/vehicle/train/br75_4.mdl new file mode 100755 index 0000000..ba0103a --- /dev/null +++ b/res/models/model/vehicle/train/br75_4.mdl @@ -0,0 +1,364 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 6.0623202323914, 1.5864230394363, 4.5724639892578, + }, + bbMin = { + -6.0107669830322, -1.5864230394363, -0.030532002449036, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/br75_4/lod_2_br75_4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_g1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1647999286652, 0, 0.8134999871254, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_g2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.12099999934435, 0, 0.50400000810623, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_g3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.12099999934435, 0, 0.50400000810623, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_g7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5628000497818, 0, 1.4045000076294, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_g9.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.12099999934435, 0, 0.50400000810623, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4906001091003, 0, 0.50040000677109, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1451001167297, 0, 0.81209999322891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.11200000345707, 0, 0.81209999322891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_w4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6540999412537, 0, 0.81209999322891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_2_w5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9739999771118, 0, 0.50040000677109, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 1400, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/br75_4/lod_1_br75_4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1647999286652, 0, 0.8134999871254, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.12099999934435, 0, 0.50400000810623, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.12099999934435, 0, 0.50400000810623, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1451001167297, 0, 0.62919998168945, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.6493999958038, 0, 0.60339999198914, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.6419999599457, 0, 1.4213999509811, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5628000497818, 0, 1.4045000076294, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g8.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.32910001277924, 0, 0.84320002794266, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_g9.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.12099999934435, 0, 0.50400000810623, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4906001091003, 0, 0.50040000677109, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.1451001167297, 0, 0.81209999322891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.11200000345707, 0, 0.81209999322891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_w4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6540999412537, 0, 0.81209999322891, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br75_4/lod_1_w5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9739999771118, 0, 0.50040000677109, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 400, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/br75_4_lod_0_body.grp", + transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, + type = "GROUP", + }, { + id = "vehicle/train/br75_4_lod_0_bogie_front.grp", + transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4906001091003, 0, 0.50040000677109, 1 }, + type = "GROUP", + }, { + id = "vehicle/train/br75_4_lod_0_bogie_back.grp", + transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9739999771118, 0, 0.50040000677109, 1 }, + type = "GROUP", + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + } + + }, + }, + matConfigs = { + { 0, 0, 0 } + }, + static = false, + visibleFrom = 0, + visibleTo = 150, + + }, + }, + metadata = { + description = { + name = _("Class 75.4 Baden VI c"), + description = _("Built by the Maschinenbau-Gesellschaft Karlsruhe for service in south-western Germany, this locomotive was equipped with larger wheels and a longer, fixed wheelbase.") + }, + railVehicle = { + topSpeed = 90, + weight = 76, + engines = { + { type = "STEAM", power = 580, tractiveEffort = 90 } + }, + configs = { + { }, + { + --[[axles = { + "vehicle/train/br75_4/lod_1_w1.msh", + "vehicle/train/br75_4/lod_1_w2.msh", + "vehicle/train/br75_4/lod_1_w3.msh", + "vehicle/train/br75_4/lod_1_w4.msh", + "vehicle/train/br75_4/lod_1_w5.msh" + }]] + }, { + axles = { + "vehicle/train/br75_4/lod_0_w1.msh", + "vehicle/train/br75_4/lod_0_w2.msh", + "vehicle/train/br75_4/lod_0_w3.msh", + "vehicle/train/br75_4/lod_0_w4.msh", + "vehicle/train/br75_4/lod_0_w5.msh" + } + } + }, + soundSet = { name = "train_steam_modern", horn = "vehicle/train_steam_old/steam_horn_2.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.1, -.7, 1.65)), crew = true, standing = true}, + }, + }, + availability = { + yearFrom = 1914, + yearTo = 1949 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + particleSystem = { + emitters = { + { + position = { 3.9332, .0, 4.8}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.898, 1.3568, .0 }, + velocity = { .0, 4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.898, -1.3568, .0 }, + velocity = { .0, -4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/br89.mdl b/res/models/model/vehicle/train/br89.mdl new file mode 100755 index 0000000..4646b92 --- /dev/null +++ b/res/models/model/vehicle/train/br89.mdl @@ -0,0 +1,203 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 4.1387271881104, 1.4581869840622, 4.1176562309265, + }, + bbMin = { + -4.4749689102173, -1.4581869840622, -0.62410598993301, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/br89/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br89/lod_0_g1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5517, 0, 0.5479, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br89/lod_0_g2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.0158, 0, 0.2894, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br89/lod_0_g3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.0158, 0, 0.2872, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br89/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6487, 0, 0.5522, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br89/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.0158, 0, 0.5522, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br89/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.3121, 0, 0.5522, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/br89/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.2,1.2),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 3.23, 0.0, 2.68)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,2.0,2.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 3.58, -0.915, 1.55)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,2.0,2.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 3.58, 0.915, 1.55)), + type = "MESH", + }, + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + [3] = { + forward = true, + name = "drive", + }, + [4] = { + forward = true, + name = "drive", + } + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1170, + + }, + }, + metadata = { + description = { + name = _("Class 89 Prussian T 3"), + description = _("As a 0-6-0 tank locomotive, it was the first that was built to German state railway norms.") + }, + railVehicle = { + topSpeed = 40, + weight = 30, + engines = { + { type = "STEAM", power = 290, tractiveEffort = 65 } + }, + configs = { + { + axles = { + "vehicle/train/br89/lod_0_w1.msh", + "vehicle/train/br89/lod_0_w2.msh", + } + } + }, + soundSet = { name = "train_steam_old", horn = "vehicle/train_steam_old/steam_horn_3.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.2, -.8, 1.24)), crew = true, standing = true}, + }, + }, + availability = { + yearFrom = 1885, + yearTo = 1932 + }, + cost = { + price = -1 + + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + }, + particleSystem = { + emitters = { + { + position = { 2.6552, .0, 4.1177}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.2019, 1.1399, .0 }, + velocity = { .0, 4.0, 0.0 }, + color = { .3, .3, .3 }, + frequency = 12, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 2.2019, -1.1399, .0 }, + velocity = { .0, -4.0, 0.0 }, + color = { .3, .3, .3 }, + frequency = 12, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/br_103_1.mdl b/res/models/model/vehicle/train/br_103_1.mdl new file mode 100755 index 0000000..303fb75 --- /dev/null +++ b/res/models/model/vehicle/train/br_103_1.mdl @@ -0,0 +1,137 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 9.9406566619873, 1.4929430484772, 5.9128289222717, + }, + bbMin = { + -9.9796762466431, -1.4929430484772, -0.70098698139191, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/br_103_1/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_103_1_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.8498, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/train/br_103_1_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4.8498, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/train/br_103_1/lod_0_windows.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_103_1/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.41, 0.0, 2.74)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.25, -0.89, 1.64)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.25, 0.89, 1.64)), + type = "MESH", + }, + + + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 2010, + + }, + }, + metadata = { + description = { + name = _("Class 103"), + description = _("This fast and heavy electric locomotive was, for a long period, the flagship of German rolling stock.") + }, + railVehicle = { + topSpeed = 200, + weight = 114, + engines = { + { type = "ELECTRIC", power = 5940, tractiveEffort = 314 } + }, + configs = { + { + axles = { + "vehicle/train/br_103_1/lod_0_w1.msh" + } + } + }, + soundSet = { name = "train_electric_modern", horn = "vehicle/train_electric_modern/horn_16.wav" } + + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.9, -.62, 1.82)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 45 + }, + }, + +} +end diff --git a/res/models/model/vehicle/train/br_185_traxx.mdl b/res/models/model/vehicle/train/br_185_traxx.mdl new file mode 100755 index 0000000..d8253ad --- /dev/null +++ b/res/models/model/vehicle/train/br_185_traxx.mdl @@ -0,0 +1,132 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 9.8356332778931, 1.597198009491, 5.8987860679626, + }, + bbMin = { + -9.8356332778931, -1.597198009491, -0.69894200563431, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { { + id = "vehicle/train/br_185_traxx/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_185_traxx_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.4432, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/br_185_traxx_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.4432, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/br_185_traxx/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/br_185_traxx/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.9,0.9),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.4, 0.94, 1.59)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.9,0.9),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.4, -0.94, 1.59)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1990, + + }, + }, + metadata = { + description = { + name = _("Class 185"), + description = _("The double voltage Class 185 was meant for international operation, and was also dubbed Europalok.") + }, + railVehicle = { + topSpeed = 160, + weight = 84, + engines = { + { type = "ELECTRIC", power = 4200, tractiveEffort = 300 } + }, + configs = { + { + axles = { + "vehicle/train/br_185_traxx/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_electric_modern", horn = "vehicle/train_electric_modern/horn_15.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.7, -.79, 1.6)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/br_218.mdl b/res/models/model/vehicle/train/br_218.mdl new file mode 100755 index 0000000..fe09e6d --- /dev/null +++ b/res/models/model/vehicle/train/br_218.mdl @@ -0,0 +1,158 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 8.4321479797363, 1.5827790498734, 4.6462259292603, + }, + bbMin = { + -8.4321479797363, -1.5827790498734, -0.57415497303009, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/br_218/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + }, { + id = "vehicle/train/br_218_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4806, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/train/br_218_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.4806, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/train/br_218/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + },{ + id = "vehicle/train/br_218/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.3,1.3),transf.degToRad( 19.0, 7.5, 0.0), vec3.new( 7.865, 0.98, 1.92)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.3,1.3),transf.degToRad( -19.0, 7.5, 0.0), vec3.new( 7.865, -0.98, 1.92)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.9,0.9),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 7.56, 0.0, 3.875)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1640, + + }, + }, + metadata = { + description = { + name = _("Class 218"), + description = _("A diesel-hydraulic locomotive from Germany built for medium to heavy trains.") + }, + railVehicle = { + topSpeed = 140, + weight = 80, + engines = { + { type = "DIESEL", power = 2500, tractiveEffort = 235 } + }, + configs = { + { + axles = { + "vehicle/train/br_218/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_diesel", horn = "vehicle/train_electric_modern/horn_2.wav" } + + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.4, -.81, 1.91)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + particleSystem = { + emitters = { + { + position = {2.6121, -0.4018, 4.605 }, + velocity = { .0, .0, 4.0 }, + color = { .1, .1, .1 }, + frequency = 30, + lifeTime = 1.0, + size01 = { .2, 4.0 }, + child = 1 + }, + { + position = {2.6121, 0.4018, 4.605 }, + velocity = { .0, .0, 4.0 }, + color = { .1, .1, .1 }, + frequency = 30, + lifeTime = 1.0, + size01 = { .2, 4.0 }, + child = 1 + }, + } + } + + + }, + +} +end diff --git a/res/models/model/vehicle/train/br_246_traxx.mdl b/res/models/model/vehicle/train/br_246_traxx.mdl new file mode 100755 index 0000000..007ef52 --- /dev/null +++ b/res/models/model/vehicle/train/br_246_traxx.mdl @@ -0,0 +1,147 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 9.4412250518799, 1.4945479631424, 4.2960352897644, + }, + bbMin = { + -9.4412250518799, -1.4945479631424, -0.67091447114944, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/br_246_traxx/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_246_traxx/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_246_traxx/lod_0_vent.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_246_traxx_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2243, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/train/br_246_traxx_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.2243, 0, 0, 1, + }, + type = "GROUP", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.25,1.25),transf.degToRad( 0.0, -17.0, 0.0), vec3.new( 8.88, 0.0, 2.295)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.05, -0.905, 1.525)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.05, 0.905, 1.525)), + type = "MESH", + },{ + id = "vehicle/train/br_246_traxx/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1680, + + }, + }, + + metadata = { + description = { + name = _("Class 246"), + description = _("In this diesel locomotive the fuel tank occupies the same space as the transformer in the electric version.") + }, + railVehicle = { + topSpeed = 160, + weight = 80, + engines = { + { type = "DIESEL", power = 2000, tractiveEffort = 240 } + }, + configs = { + { + axles = { + "vehicle/train/br_246_traxx/lod_0_w1.msh", + "vehicle/train/br_246_traxx/lod_0_w2.msh" + } + }, + + }, + soundSet = { name = "train_diesel", horn = "vehicle/truck_modern/horn.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.4, -.7, 1.52)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + + +} +end diff --git a/res/models/model/vehicle/train/br_e94.mdl b/res/models/model/vehicle/train/br_e94.mdl new file mode 100755 index 0000000..f4cb8a8 --- /dev/null +++ b/res/models/model/vehicle/train/br_e94.mdl @@ -0,0 +1,126 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/br_e94/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/br_e94_lod0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.322, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/br_e94_lod0_bogie1.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.322, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/br_e94/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/br_e94/lod_0_interior.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/br_e94/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.2,1.2,1.2),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 8.67, 0.0, 2.865)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.2,1.2,1.2),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 8.64, -0.905, 1.56)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.2,1.2,1.2),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 8.64, 0.905, 1.56)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1950, + + }, + }, + metadata = { + description = { + name = _("Class E 94"), + description = _("This electric heavy freight locomotive was built for the Deutsche Reichsbahn since 1940 and is commonly known as the German Crocodile.") + }, + railVehicle = { + topSpeed = 90, + weight = 119, + engines = { + { type = "ELECTRIC", power = 3000, tractiveEffort = 363 } + }, + configs = { + { + axles = { + "vehicle/train/br_e94/lod_0_w1.msh", + } + } + }, + soundSet = "train_electric_old" + }, + transportVehicle = { + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.18, -0.8, 1.95)), crew = true}, + }, + carrier = "RAIL" + }, + availability = { + yearFrom = 1938, + yearTo = 1949 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/c6_8.mdl b/res/models/model/vehicle/train/c6_8.mdl new file mode 100755 index 0000000..9496abe --- /dev/null +++ b/res/models/model/vehicle/train/c6_8.mdl @@ -0,0 +1,133 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 10.25147819519, 1.599387049675, 5.9179420471191, + }, + bbMin = { + -10.25147819519, -1.7070970535278, -0.027449011802673, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/c6_8_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/c6_8_lod_0_idler.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.4119000434875, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/c6_8_lod_0_idler.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -7.4119000434875, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 2030, + + }, + }, + metadata = { + description = { + name = _("Ce 6/8 II Crocodile"), + description = _( + "Swiss electric locomotive known as the Crocodile, mainly used for heavy freight trains on sinuous routes like the Gotthard line.") + }, + availability = { + yearFrom = 1921, + yearTo = 1949, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 45, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/train/c6_8/lod_0_w1.msh", "vehicle/train/c6_8/lod_0_w2.msh", + }, + fakeBogies = { + + }, + + }, + }, + engines = { + { + power = 1200, + tractiveEffort = 150, + type = "ELECTRIC", + + }, + }, + soundSet = { + horn = "", + name = "train_electric_old", + + }, + topSpeed = 75, + weight = 128, + + }, + transportVehicle = { + capacities = { + }, + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.5, .85, 1.5)), crew = true, standing = true}, + }, + + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/d1_3_new.mdl b/res/models/model/vehicle/train/d1_3_new.mdl new file mode 100755 index 0000000..350ac2f --- /dev/null +++ b/res/models/model/vehicle/train/d1_3_new.mdl @@ -0,0 +1,127 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/d1_3_lod_0_body_new.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/d1_3_lod_0_coalcar_new.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.226, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + }, + } + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1230, + + }, + }, + metadata = { + description = { + name = _("D 1/3"), + description = _("This legendary railway was known as the Spanisch-Brötli-Bahn, named after a delicacy of Baden, Switzerland.") + }, + railVehicle = { + topSpeed = 40, + weight = 30, + engines = { + { type = "STEAM", power = 50, tractiveEffort = 15 } + }, + configs = { + { + axles = { + "vehicle/train/d1_3_new/lod_0_w2.msh", + "vehicle/train/d1_3_new/lod_0_w4.msh", + "vehicle/train/d1_3_new/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_steam_old", horn = "vehicle/train_steam_old/steam_horn_10.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.0, -0.3, 1.05)), standing = true, crew = true }, + } + }, + availability = { + yearFrom = 1850, + yearTo = 1866 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + particleSystem = { + emitters = { + { + position = { 2.12, .0, 4.15 }, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 2 + }, + { + position = { 1.8, .9, .65 }, + velocity = { .0, 4.0, 0.0 }, + color = { .5, .5, .5 }, + frequency = 12, + lifeTime = 5.0, + size01 = { .6, 8.0 }, + child = 2 + }, + { + position = { 1.8, -.9, .65 }, + velocity = { .0, -4.0, 0.0 }, + color = { .5, .5, .5 }, + frequency = 12, + lifeTime = 5.0, + size01 = { .6, 8.0 }, + child = 2 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/db_v100.mdl b/res/models/model/vehicle/train/db_v100.mdl new file mode 100755 index 0000000..ff8093c --- /dev/null +++ b/res/models/model/vehicle/train/db_v100.mdl @@ -0,0 +1,229 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 6.7790122032166, 1.5564210414886, 4.2407069206238, + }, + bbMin = { + -7.0255718231201, -1.5564210414886, -0.55601000785828, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/db_v100/lod_2_v100.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/db_v100_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.3699, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/db_v100_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.6164, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 230, + visibleTo = 1420, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/db_v100/lod_1_v100.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/db_v100_lod_1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.3699, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/db_v100_lod_1_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.6164, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 230, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/db_v100/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/db_v100_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.3699, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/db_v100_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.6164, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/db_v100/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/train/db_v100/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.95,.95),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.09, 0.745, 1.7)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.95,.95),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.09, -0.745, 1.7)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.1,1.1),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.01, 0, 3.3)), + type = "MESH", + }, + + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + description = { + name = _("Class V 100"), + description = _("This diesel-hydraulic locomotive was produced for non-electrified branch lines as a replacement for steam locomotives.") + }, + railVehicle = { + topSpeed = 90, + weight = 62, + engines = { + { type = "DIESEL", power = 809, tractiveEffort = 177 } + }, + configs = { + { + }, + { + axles = { + "vehicle/train/db_v100/lod_1_w1.msh", + } + }, + { + axles = { + "vehicle/train/db_v100/lod_0_w1.msh", + } + } + }, + soundSet = "train_diesel" + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-.7, -.62, 2.22)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/lner_class_a4.mdl b/res/models/model/vehicle/train/lner_class_a4.mdl new file mode 100755 index 0000000..6848449 --- /dev/null +++ b/res/models/model/vehicle/train/lner_class_a4.mdl @@ -0,0 +1,373 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 7.7369499206543, 1.4122450351715, 4.0343117713928, + }, + bbMin = { + -13.642044067383, -1.4122450351715, -0.070711970329285, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/lner_class_a4/lod_2_a4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_coalcar.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.5486001968384, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.66769999265671, 0, 0.7049999833107, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.66500002145767, 0, 0.7049999833107, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.0145998001099, 0, 0.82679998874664, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.395299911499, 0, 0.82330000400543, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3962998390198, 0, 0.72869998216629, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3215999603271, 0, 1.6866999864578, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_g9.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.67320001125336, 0, 1.0255999565125, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11.920700073242, 0, 0.55870002508163, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.8698999881744, 0, 1.01859998703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.66500002145767, 0, 1.01859998703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5398000478745, 0, 1.01859998703, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.443699836731, 0, 0.44980001449585, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.2048001289368, 0, 0.55870002508163, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.7768001556396, 0, 0.55870002508163, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w7.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -10.348799705505, 0, 0.55870002508163, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_b1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.5448999404907, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.500500202179, 0, 0.48989999294281, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/lner_class_a4/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.463399887085, 0, 0.48989999294281, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 300, + visibleTo = 1750, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/lner_class_a4_lod_1_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_class_a4_lod_1_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.5445995330811, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_class_a4_lod_1_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.5487999916077, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + { + forward = true, + name = "drive", + + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 130, + visibleTo = 300, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/lner_class_a4_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_class_a4_lod_0_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.5445995330811, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_class_a4_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.5487999916077, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + { + forward = true, + name = "drive", + + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 130, + + }, + }, + metadata = { + description = { + name = _("Class A4"), + description = _("A streamlined 4-6-2 steam locomotive designed by Nigel Gresley for the London and North Eastern Railway. The \"4468 Mallard\" still holds the world record as the fastest steam locomotive.") + }, + railVehicle = { + configs = { + { + + }, { + axles = { + "vehicle/train/lner_class_a4/lod_1_w7.msh", + "vehicle/train/lner_class_a4/lod_1_w3.msh", + "vehicle/train/lner_class_a4/lod_1_w6.msh", + "vehicle/train/lner_class_a4/lod_1_w1.msh", + "vehicle/train/lner_class_a4/lod_1_w2.msh", + }, + + }, { + axles = { + "vehicle/train/lner_class_a4/lod_0_w7.msh", + "vehicle/train/lner_class_a4/lod_0_w3.msh", + "vehicle/train/lner_class_a4/lod_0_w6.msh", + "vehicle/train/lner_class_a4/lod_0_w1.msh", + "vehicle/train/lner_class_a4/lod_0_w2.msh", + }, + + }, + }, + engines = { + { + power = 1986, + tractiveEffort = 150, + type = "STEAM", + + }, + }, + topSpeed = 145, + weight = 105, + soundSet = { name = "train_steam_modern", horn = "vehicle/train_steam_old/steam_horn_12.wav" } + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.7, -0.6, 1.3)), crew = true, standing = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(30.0, 0.0, 0.0), vec3.new(-5, 0.7, 1.3)), crew = true, standing = true}, + }, + capacities = { + + }, + carrier = "RAIL", + }, + availability = { + yearFrom = 1935, + yearTo = 1949 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + particleSystem = { + emitters = { + { + position = { 5.2, .0, 4.0343}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 100, + lifeTime = 15.0, + size01 = { 1.0, 12.0 }, + child = 1 + }, + { + position = { 4.6839, 1.301, .0 }, + velocity = { .0, 4.0, 0.0 }, + color = { .3, .3, .3 }, + frequency = 24, + lifeTime = 15.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 4.6839, -1.301, .0 }, + velocity = { .0, -4.0, 0.0 }, + color = { .3, .3, .3 }, + frequency = 24, + lifeTime = 15.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + }, + +} +end diff --git a/res/models/model/vehicle/train/lner_flying_scotsman.mdl b/res/models/model/vehicle/train/lner_flying_scotsman.mdl new file mode 100755 index 0000000..edfc7af --- /dev/null +++ b/res/models/model/vehicle/train/lner_flying_scotsman.mdl @@ -0,0 +1,149 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/lner_flying_scotsman_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_flying_scotsman_lod_0_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.6228, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_flying_scotsman_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.6884, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/lner_flying_scotsman_lod_0_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.0821, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + }, + } + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1670, + + }, + }, + metadata = { + description = { + name = _("Class A3 Flying Scotsman"), + description = _("The Flying Scotsman is an express passenger train that has operated between Edinburgh and London, the capitals of Scotland and England via the East Coast Main Line.") + }, + railVehicle = { + topSpeed = 120, + weight = 97.8, + engines = { + { type = "STEAM", power = 1655, tractiveEffort = 135 } + }, + configs = { + { + axles = { + "vehicle/train/lner_flying_scotsman/lod_0_w1.msh", + "vehicle/train/lner_flying_scotsman/lod_0_w2.msh", + "vehicle/train/lner_flying_scotsman/lod_0_w3.msh", + "vehicle/train/lner_flying_scotsman/lod_0_w4.msh", + "vehicle/train/lner_flying_scotsman/lod_0_w5.msh", + } + } + }, + soundSet = "train_steam_modern" + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.7, -0.6, 1.3)), crew = true, standing = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(30.0, 0.0, 0.0), vec3.new(-5, 0.7, 1.3)), crew = true, standing = true}, + }, + carrier = "RAIL" + }, + availability = { + yearFrom = 1925, + yearTo = 1949 + }, + cost = { + price = -1 + + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + particleSystem = { + emitters = { + { + position = {4.3632, .0, 3.8589}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 4.195, 1.283, 1.0 }, + velocity = { .0, 4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { 4.195, -1.283, 1.0 }, + velocity = { .0, -4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + + }, + +} +end diff --git a/res/models/model/vehicle/train/nohab.mdl b/res/models/model/vehicle/train/nohab.mdl new file mode 100755 index 0000000..6d32223 --- /dev/null +++ b/res/models/model/vehicle/train/nohab.mdl @@ -0,0 +1,149 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 9.785943031311, 1.6869109869003, 4.4580950737, + }, + bbMin = { + -9.785943031311, -1.6869109869003, -0.63750797510147, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/nohab_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.3174, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/nohab_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.3174, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/nohab/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/nohab/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/nohab/lod_0_interior.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/nohab/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.35,1.35),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.05, 1.153, 2.13)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.35,1.35),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.05, -1.153, 2.13)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.35,1.35),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 9.05, 0, 3.13)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1740, + + }, + }, + metadata = { + description = { + name = _("NoHAB AA16"), + description = _("This diesel-electric locomotive was a European variant of the American F-series from GM.") + }, + railVehicle = { + topSpeed = 120, + weight = 108, + engines = { + { type = "DIESEL", power = 1450, tractiveEffort = 200 } + }, + configs = { + { + axles = { + "vehicle/train/nohab/lod_0_w1.msh", + "vehicle/train/nohab/lod_0_w1.msh", + "vehicle/train/nohab/lod_0_w1.msh", + "vehicle/train/nohab/lod_0_w1.msh", + "vehicle/train/nohab/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_diesel", horn = "vehicle/train_diesel/horn_13_freight.wav" } + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =11, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, .9, 2.22)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/obb_1042.mdl b/res/models/model/vehicle/train/obb_1042.mdl new file mode 100755 index 0000000..dc44930 --- /dev/null +++ b/res/models/model/vehicle/train/obb_1042.mdl @@ -0,0 +1,111 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/obb_1042_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(0, 0, 0)), -- manual rotation + type = "GROUP", + + }, { + id = "vehicle/train/obb_1042/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + transf = transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(0, 0, 0)), -- manual rotation + type = "MESH", + + },{ + id = "vehicle/train/obb_1042_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.9489, 0, 0, 1, + }, + transf = transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(3.9489, 0, 0)), -- manual rotation + type = "GROUP", + + },{ + id = "vehicle/train/obb_1042_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9489, 0, 0, 1, + }, + transf = transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(-3.9489, 0, 0)), -- manual rotation + type = "GROUP", + + } + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1810, + + }, + }, + metadata = { + description = { + name = _("Class 1042"), + description = _("The Class 1042 was a class of electric locomotives operated by the Austrian Federal Railways.") + }, + railVehicle = { + topSpeed = 140, + weight = 83.9, + engines = { + { type = "ELECTRIC", power = 3300, tractiveEffort = 260 } + }, + configs = { + { + axles = { + "vehicle/train/obb_1042/lod_0_w1.msh", + } + }, + + }, + soundSet = "train_electric_modern" + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.9, -.7, 1.51)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000, + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/plm_220.mdl b/res/models/model/vehicle/train/plm_220.mdl new file mode 100755 index 0000000..eae1848 --- /dev/null +++ b/res/models/model/vehicle/train/plm_220.mdl @@ -0,0 +1,124 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/plm_220_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/plm_220_lod_0_coalcar.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.2365, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [1] = { + forward = true, + name = "drive", + }, + }, + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1540, + + }, + }, + metadata = { + description = { + name = _("PLM 220"), + description = _("The very futuristic \"Big C\" is a pioneer among the aerodynamic locomotives.") + }, + railVehicle = { + topSpeed = 60, + weight = 57.4, + engines = { + { type = "STEAM", power = 450, tractiveEffort = 75 } + }, + configs = { + { + axles = { + "vehicle/train/plm_220/lod_0_w1.msh", + "vehicle/train/plm_220/lod_0_w2.msh", + "vehicle/train/plm_220/lod_0_w3.msh", + "vehicle/train/plm_220/lod_0_w4.msh" + } + } + }, + soundSet = { name = "train_steam_old", horn = "vehicle/train_steam_old/steam_horn_20.wav" } + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.2, -0.1, 1.4)), crew = true, standing = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(30.0, 0.0, 0.0), vec3.new(-5.4, 0.7, 1.4)), crew = true, standing = true}, + }, + carrier = "RAIL" + }, + availability = { + yearFrom = 1890, + yearTo = 1940 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + }, + particleSystem = { + emitters = { + { + position = {2.1654, .0, 4.207}, + velocity = { .0, .0, 10.0 }, + color = { .3, .3, .3 }, + frequency = 80, + lifeTime = 20.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { -0.614, 1.2299, 1.0154 }, + velocity = { .0, 4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + }, + { + position = { -0.614, -1.2299, 1.0154 }, + velocity = { .0, -4.0, 0.0 }, + color = { .4, .4, .4 }, + frequency = 12, + lifeTime = 10.0, + size01 = { .8, 10.0 }, + child = 1 + } + } + } + + }, + +} +end diff --git a/res/models/model/vehicle/train/rabde_12_12_front.mdl b/res/models/model/vehicle/train/rabde_12_12_front.mdl new file mode 100755 index 0000000..3a8bc6e --- /dev/null +++ b/res/models/model/vehicle/train/rabde_12_12_front.mdl @@ -0,0 +1,367 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 12.39673614502, 1.5505640506744, 4.4065480232239, + }, + bbMin = { + -12.780932426453, -1.5505640506744, -0.055481970310211, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/rabde_12_12_lod_2_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.1577997207642, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -9.1577997207642, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "open_doors", forward = true }, + }, + close_all_doors = { + { name = "open_doors", forward = false }, + }, + open_doors_left = { + { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 2000, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/rabde_12_12_lod_1_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.1577997207642, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_1_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -9.1577997207642, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "open_doors", forward = true }, + }, + close_all_doors = { + { name = "open_doors", forward = false }, + }, + open_doors_left = { + { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 350, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/rabde_12_12_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.1577997207642, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -9.1577997207642, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "open_doors", forward = true }, + }, + close_all_doors = { + { name = "open_doors", forward = false }, + }, + open_doors_left = { + { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 50, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/train/rabde_12_12_front/lod_2_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/rabde_12_12_front/lod_1_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/rabde_12_12_front/lod_0_w1.msh", + }, + fakeBogies = { + + }, + + }, + }, + engines = { + { + power = 815, + tractiveEffort = 80, + type = "ELECTRIC", + + }, + }, + soundSet = { + horn = "", + name = "waggon_modern", + + }, + topSpeed = 125, + weight = 55, + + }, + transportVehicle = { + seats = { + -- driver + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(10.8, .7, 1)), crew = true, standing = false}, + -- passengers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.2, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.2, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.3, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.3, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.9, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.9, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.9, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.9, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.8, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.8, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.8, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.8, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.8, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.8, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.8, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.8, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.4, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(5.4, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.4, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(5.4, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.4, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(6.4, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.4, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(6.4, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.1, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(7.1, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.1, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(7.1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(8.2, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(8.2, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(8.2, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(8.2, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-3.7, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-3.7, 1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.3, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-5.3, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.3, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-5.3, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.4, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-4.4, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.4, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-4.4, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.1, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-7.1, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.1, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-7.1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.1, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-6.1, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.1, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-6.1, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-8.9, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-8.9, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-8.9, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-8.9,1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-7.8, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-7.8, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-7.8, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-7.8, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10.6, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-10.6, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10.6, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-10.6,1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-9.6, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-9.6, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-9.6, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-9.6, -1, 0.96)), }, + + + }, + capacities = { + { + capacity = 56, + type = "PASSENGERS", + + }, + }, + carrier = "RAIL", + loadSpeed = 4, + multipleUnitOnly = true + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/rabde_12_12_waggon.mdl b/res/models/model/vehicle/train/rabde_12_12_waggon.mdl new file mode 100755 index 0000000..4d5f6f6 --- /dev/null +++ b/res/models/model/vehicle/train/rabde_12_12_waggon.mdl @@ -0,0 +1,345 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 13.024568557739, 1.5505640506744, 5.8909320831299, + }, + bbMin = { + -12.078281402588, -1.5505640506744, -0.055481970310211, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/rabde_12_12_lod_2_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.3304004669189, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 8.5118999481201, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "open_doors", forward = true }, + }, + close_all_doors = { + { name = "open_doors", forward = false }, + }, + open_doors_left = { + { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 2250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/rabde_12_12_lod_1_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.3304004669189, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_1_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 8.5118999481201, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "open_doors", forward = true }, + }, + close_all_doors = { + { name = "open_doors", forward = false }, + }, + open_doors_left = { + { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 350, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/rabde_12_12_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.3304004669189, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/rabde_12_12_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 8.5118999481201, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "open_doors", forward = true }, + }, + close_all_doors = { + { name = "open_doors", forward = false }, + }, + open_doors_left = { + { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 50, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/train/rabde_12_12_front/lod_2_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/rabde_12_12_front/lod_1_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/rabde_12_12_front/lod_0_w1.msh", + }, + fakeBogies = { + + }, + + }, + }, + engines = { + { + power = 815, + tractiveEffort = 80, + type = "ELECTRIC", + + }, + }, + soundSet = { + horn = "", + name = "train_electric_modern", + + }, + topSpeed = 125, + weight = 60, + + }, + transportVehicle = { + capacities = { + { + capacity = 144, + type = "PASSENGERS", + + }, + }, + carrier = "RAIL", + loadSpeed = 3, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.2, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.2, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.3, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.3, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.9, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.9, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.9, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.9, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.8, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.8, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.8, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.8, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.8, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.8, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.8, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.8, -1, 0.96)), }, + + + + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.1, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4.1, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.1, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.1, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.1, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.1, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-3.1, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.9, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-5.9, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.9, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.9, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.9, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-4.9, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.9, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-4.9, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.6, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-7.6, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.6, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-7.6,1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.6, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-6.6, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.6, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-6.6, -1, 0.96)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.4, -0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-9.4, -1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.4, 0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-9.3,1, 1, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.3, 0.8, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-8.3, 1.2, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.3, -0.55, 0.96)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-8.3, -1, 0.96)), }, + + + }, + multipleUnitOnly = true + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/re_44i.mdl b/res/models/model/vehicle/train/re_44i.mdl new file mode 100755 index 0000000..d500860 --- /dev/null +++ b/res/models/model/vehicle/train/re_44i.mdl @@ -0,0 +1,235 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 7.4868950843811, 1.5592080354691, 5.9032998085022, + }, + bbMin = { + -7.4868950843811, -1.5592080354691, -0.54285299777985, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_44i/lod_2_re_44i.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/re_44i/lod_2_w.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.4563, 0, 0.4873, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/re_44i/lod_2_w.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.4907, 0, 0.4873, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/re_44i/lod_2_w.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4563, 0, 0.4873, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/re_44i/lod_2_w.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.4907, 0, 0.4873, 1, + }, + type = "MESH", + + }, + + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0 + }, + }, + static = false, + visibleFrom = 340, + visibleTo = 1770, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/re_44i/lod_1_re_44i.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/re_44i_lod_1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.9748, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_44i_lod_1_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.9748, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 200, + visibleTo = 340, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/re_44i/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/re_44i_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.9748, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_44i_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.9748, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_44i/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/re_44i/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.1,1.1),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.77, -0.885, 1.455)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.1,1.1),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.77, 0.885, 1.455)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.815, 0.0, 3.235)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 200, + + }, + }, + metadata = { + description = { + name = _("Re 4/4"), + description = _("A light-weight locomotive for fast passenger trains, the first in Switzerland equipped with bogies.") + }, + railVehicle = { + topSpeed = 125, + weight = 57, + engines = { + { type = "ELECTRIC", power = 1900, tractiveEffort = 135 } + }, + configs = { + { + },{ + axles = { + "vehicle/train/re_44i/lod_1_w.msh", + } + },{ + axles = { + "vehicle/train/re_44i/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_electric_old", horn = "vehicle/train_electric_modern/horn_16.wav" } + + }, + transportVehicle = { + carrier = "RAIL", + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.5, .9, 1.25)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 55 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/re_450.mdl b/res/models/model/vehicle/train/re_450.mdl new file mode 100755 index 0000000..d006666 --- /dev/null +++ b/res/models/model/vehicle/train/re_450.mdl @@ -0,0 +1,229 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 9.5686473846436, 1.3927730321884, 5.8968467712402, + }, + bbMin = { + -9.1911715698242, -1.3927730321884, -0.55368798971176, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_2_front_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.1392, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_2_front_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.3955, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/re_450_lod_2_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 300, + visibleTo = 1990, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_1_front_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.1392, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_1_front_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.3955, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/re_450_lod_1_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 300, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_0_front_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.1392, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_0_front_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.3955, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + railVehicle = { + topSpeed = 130, + weight = 74, + engines = { + { type = "ELECTRIC", power = 3200, tractiveEffort = 240 } + }, + configs = { + { + axles = { + "vehicle/train/re_450/lod_2_w1.msh", + } + }, + { + axles = { + "vehicle/train/re_450/lod_1_w1.msh", + } + }, + { + axles = { + "vehicle/train/re_450/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_electric_modern", horn = "vehicle/train_electric_modern/horn_21_intercity125.wav" } + }, + transportVehicle = { + carrier = "RAIL", + multipleUnitOnly = true, + seats = { + -- driver + { group =9, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(7.8, .6, 1.4)), crew = true, standing = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + + }, + +} +end diff --git a/res/models/model/vehicle/train/re_450_b.mdl b/res/models/model/vehicle/train/re_450_b.mdl new file mode 100755 index 0000000..ba040e4 --- /dev/null +++ b/res/models/model/vehicle/train/re_450_b.mdl @@ -0,0 +1,410 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 13.32302570343, 1.4731160402298, 4.5481429100037, + }, + bbMin = { + -13.327101707458, -1.4731160402298, -0.50950002670288, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_2_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.9427, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/re_450_lod_2_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.9427, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/re_450_lod_2_mid.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 300, + visibleTo = 2100, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_1_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.9427, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/re_450_lod_1_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.9427, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/re_450_lod_1_mid.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 300, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_0_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.9427, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/re_450_lod_0_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.9427, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/train/re_450_lod_0_mid.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + description = { + name = _("Double-deck car"), + description = _("A standard double-deck train car, often used for local transport.") + }, + railVehicle = { + topSpeed = 130, + weight = 48, + configs = { + { + axles = { + "vehicle/train/re_450_b/lod_2_w2.msh", + } + }, + { + axles = { + "vehicle/train/re_450_b/lod_1_w2.msh", + } + }, + { + axles = { + "vehicle/train/re_450_b/lod_0_w2.msh", + } + } + }, + soundSet = "waggon_modern" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 132 } + }, + carrier = "RAIL", + loadSpeed = 4, + seats = { + + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(11.5, -0.6, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(11.5, -1.15, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(11.5, 0.4, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(11.5, 0.9, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(12.4, 0.6, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(12.4, 1.15, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(12.4, -0.4, 1.2)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(12.4, -0.9, 1.2)), }, + + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.3, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.2, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.2, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(2, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(2, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.9, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.9, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.7, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.7, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.6, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.6, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(5.3, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(5.3, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(6.2, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(6.2, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.3, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(7.3, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(7.3, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.2, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.2, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.3, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.3, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.9, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.9, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-2, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4.6, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.6, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.7, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-3.7, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, -0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-6.2, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-6.2, 0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, 0.6, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-5.3, 1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, -0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-5.3, -0.9, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(.0, 0.0, 0.0), vec3.new(-7.2, 0.4, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-7.2, -1.1, 0.4)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-7.2, 0.9, 0.4)), }, + + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.3, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.2, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.2, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(2, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(2, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.9, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.9, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.7, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.7, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.6, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.6, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(5.3, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(5.3, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(6.2, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(6.2, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(7.3, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(7.3, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.2, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.2, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.3, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.3, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.9, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.9, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-2, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4.6, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.6, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.7, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-3.7, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, -0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-6.2, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, 0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-6.2, 0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, 0.6, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-5.3, 1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, -0.4, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-5.3, -0.9, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-7.2, -1.1, 2.45)), }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-7.2, 0.9, 2.45)), }, + + + + + + + + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + + }, + +} +end diff --git a/res/models/model/vehicle/train/re_450_bt.mdl b/res/models/model/vehicle/train/re_450_bt.mdl new file mode 100755 index 0000000..845d43d --- /dev/null +++ b/res/models/model/vehicle/train/re_450_bt.mdl @@ -0,0 +1,390 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 13.272323608398, 1.4731160402298, 4.5481429100037, + }, + bbMin = { + -13.513454437256, -1.4731160402298, -0.06113899871707, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_2_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.8879, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/re_450_lod_2_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.9331, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_2_end.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 300, + visibleTo = 2100, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_1_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.8879, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/re_450_lod_1_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.9331, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_1_end.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 300, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/re_450_lod_0_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.8879, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/train/re_450_lod_0_repeat_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.9331, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/re_450_lod_0_end.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + }, + }, + events = { + open_all_doors = { + [3] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [3] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors_left", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors_left", forward = false }, + }, + open_doors_right = { + [3] = { name = "open_doors_right", forward = true }, + }, + close_doors_right = { + [3] = { name = "open_doors_right", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + railVehicle = { + topSpeed = 130, + weight = 49, + configs = { + { + axles = { + "vehicle/train/re_450_b/lod_2_w2.msh", + } + }, + { + axles = { + "vehicle/train/re_450_b/lod_1_w2.msh", + } + }, + { + axles = { + "vehicle/train/re_450_b/lod_0_w2.msh", + } + } + }, + soundSet = "waggon_modern" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 132 } + }, + carrier = "RAIL", + loadSpeed = 4, + seats = { + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(11.5, -0.6, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(11.5, -1.15, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(11.5, 0.4, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(11.5, 0.9, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(12.4, 0.6, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(12.4, 1.15, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(12.4, -0.4, 1.2)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(12.4, -0.9, 1.2)), crew = false }, + + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.3, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.2, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.2, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(2, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(2, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.9, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.9, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.7, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.7, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.6, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.6, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(5.3, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(5.3, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(6.2, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(6.2, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.3, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(7.3, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(7.3, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.2, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.2, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.3, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.3, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.9, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.9, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-2, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4.6, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.6, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.7, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-3.7, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, -0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-6.2, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-6.2, 0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, 0.6, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-5.3, 1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, -0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-5.3, -0.9, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(.0, 0.0, 0.0), vec3.new(-7.2, 0.4, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-7.2, -1.1, 0.4)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-7.2, 0.9, 0.4)), crew = false }, + + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.3, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.2, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.2, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(2, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(2, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.9, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.9, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.7, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.7, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.7, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.6, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.6, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(5.3, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.3, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(5.3, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(6.2, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.2, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(6.2, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(7.3, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(7.3, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.2, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.2, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.3, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.3, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.3, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.9, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.9, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.9, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-2, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4.6, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.6, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.6, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.7, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-3.7, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, -0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-6.2, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.2, 0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-6.2, 0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, 0.6, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-5.3, 1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-5.3, -0.4, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-5.3, -0.9, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-7.2, -1.1, 2.45)), crew = false }, + { group =18, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-7.2, 0.9, 2.45)), crew = false }, + }, + multipleUnitOnly = true + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + + }, + +} +end diff --git a/res/models/model/vehicle/train/roterpfeil.mdl b/res/models/model/vehicle/train/roterpfeil.mdl new file mode 100755 index 0000000..3ec010e --- /dev/null +++ b/res/models/model/vehicle/train/roterpfeil.mdl @@ -0,0 +1,258 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 12.747671127319, 1.6252870559692, 5.9047808647156, + }, + bbMin = { + -12.747671127319, -1.6252870559692, -0.53837102651596, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/roterpfeil/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/roterpfeil_lod_0_doors.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.1544, -1.4209, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/roterpfeil_lod_0_doors.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -6.1544, 1.4209, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/roterpfeil_lod_0_doors2.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -6.1544, -1.4209, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/roterpfeil_lod_0_doors2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.1544, 1.4209, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/roterpfeil_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.0916, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/roterpfeil_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.0916,0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/roterpfeil/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/roterpfeil/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(0.8,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 10.17, 0.0, 3.19)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(0.8,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 11.86, -0.81, 1.41)), + type = "MESH", + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(0.8,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 11.86, 0.81, 1.41)), + type = "MESH", + }, + }, + events = { + open_all_doors = { + [2] = { name = "open_doors", forward = true }, + [3] = { name = "open_doors", forward = true }, + [4] = { name = "open_doors", forward = true }, + [5] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [2] = { name = "open_doors", forward = false }, + [3] = { name = "open_doors", forward = false }, + [4] = { name = "open_doors", forward = false }, + [5] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [3] = { name = "open_doors", forward = true }, + [5] = { name = "open_doors", forward = true }, + }, + close_doors_left = { + [3] = { name = "open_doors", forward = false }, + [5] = { name = "open_doors", forward = false }, + }, + open_doors_right = { + [2] = { name = "open_doors", forward = true }, + [4] = { name = "open_doors", forward = true }, + }, + close_doors_right = { + [2] = { name = "open_doors", forward = false }, + [4] = { name = "open_doors", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 2270, + + }, + }, + metadata = { + description = { + name = _("CLe 2/4 Red Arrow"), + description = _("This single unit express rail car was very popular in Switzerland.") + }, + railVehicle = { + topSpeed = 125, + weight = 33, + engines = { + { type = "ELECTRIC", power = 315, tractiveEffort = 50 } + }, + configs = { + { + axles = { + "vehicle/train/roterpfeil/lod_0_w1.msh" + } + } + }, + soundSet = "train_electric_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "PASSENGERS", capacity = 70 } + }, + loadSpeed = 2, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(8.0, -0.7, 0.9)), crew = true}, + -- passengers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.5, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-0.5, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.5, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-0.5, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.5, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(0.5, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.5, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(0.5, -1, 0.8)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.2, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.2, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.2, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.2, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.2, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.2, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.2, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.2, -1, 0.8)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.9, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(2.9, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.9, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(2.9, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.9, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(3.9, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.9, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(3.9, -1, 0.8)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.6, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(4.6, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.6, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(4.6, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.6, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(5.6, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.6, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(5.6, -1, 0.8)), crew = false}, + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.2, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.2, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.2, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.2, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.2, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.2, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.2, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.2, -1, 0.8)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.9, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-3.9, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.9, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-3.9, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.9, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-2.9, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.9, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-2.9, -1, 0.8)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.6, -0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-5.6, -1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.6, 0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-5.6, 1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.6, 0.7, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-4.6, 1.1, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.6, -0.5, 0.8)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-4.6, -1, 0.8)), crew = false}, + + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/schienenbus.mdl b/res/models/model/vehicle/train/schienenbus.mdl new file mode 100755 index 0000000..6d95776 --- /dev/null +++ b/res/models/model/vehicle/train/schienenbus.mdl @@ -0,0 +1,388 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 6.770984172821, 1.4350030422211, 3.3898859024048, + }, + bbMin = { + -6.770984172821, -1.4350030422211, -0.488813996315, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/schienenbus/lod_2_lod2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus/lod_2_w_lod2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9114, 0, 0.4608, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus/lod_2_w_lod2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9114, 0, 0.4608, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 220, + visibleTo = 1260, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/schienenbus/lod_1_lod1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus/lod_1_w_lod1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9114, 0, 0.4608, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus/lod_1_w_lod1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9114, 0, 0.4608, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus_doors_lod1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.4433, 1.4327, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/schienenbus_doors_lod1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.4433, -1.4010, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/schienenbus_doors_lod1.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.4433, -1.4327, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/schienenbus_doors_lod1.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.4433, 1.4010, 0, 1, + }, + type = "GROUP", + }, + }, + events = { + open_all_doors = { + [4] = { name = "open_all_doors", forward = true }, + [5] = { name = "open_all_doors_inv", forward = true }, + [6] = { name = "open_all_doors", forward = true }, + [7] = { name = "open_all_doors_inv", forward = true }, + }, + close_all_doors = { + [4] = { name = "open_all_doors", forward = false }, + [5] = { name = "open_all_doors_inv", forward = false }, + [6] = { name = "open_all_doors", forward = false }, + [7] = { name = "open_all_doors_inv", forward = false }, + }, + open_doors_left = { + [4] = { name = "open_all_doors", forward = true }, + [7] = { name = "open_all_doors_inv", forward = true }, + }, + close_doors_left = { + [4] = { name = "open_all_doors", forward = false }, + [7] = { name = "open_all_doors_inv", forward = false }, + }, + open_doors_right = { + [5] = { name = "open_all_doors_inv", forward = true }, + [6] = { name = "open_all_doors", forward = true }, + }, + close_doors_right = { + [5] = { name = "open_all_doors_inv", forward = false }, + [6] = { name = "open_all_doors", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 220, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/train/schienenbus/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9114, 0, 0.4608, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9114, 0, 0.4608, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/schienenbus_doors_lod0.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.4433, 1.4327, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/schienenbus_doors_lod0.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.4433, -1.4010, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/schienenbus_doors_lod0.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.4433, -1.4327, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/schienenbus_doors_lod0.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.4433, 1.4010, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/train/schienenbus/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,.9,.9),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.22, -0.003, 2.965)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,.8,.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.35, 0.845, 1.48)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,.8,.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 6.35, -0.845, 1.48)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,.8,.8),transf.degToRad( 180.0, 0.0, 0.0), vec3.new( -6.35, 0.845, 1.48)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,.8,.8),transf.degToRad( 180.0, 0.0, 0.0), vec3.new( -6.35, -0.845, 1.48)), + type = "MESH", + }, + + { + id = "vehicle/train/schienenbus/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [4] = { name = "open_all_doors", forward = true }, + [5] = { name = "open_all_doors_inv", forward = true }, + [6] = { name = "open_all_doors", forward = true }, + [7] = { name = "open_all_doors_inv", forward = true }, + }, + close_all_doors = { + [4] = { name = "open_all_doors", forward = false }, + [5] = { name = "open_all_doors_inv", forward = false }, + [6] = { name = "open_all_doors", forward = false }, + [7] = { name = "open_all_doors_inv", forward = false }, + }, + open_doors_left = { + [4] = { name = "open_all_doors", forward = true }, + [7] = { name = "open_all_doors_inv", forward = true }, + }, + close_doors_left = { + [4] = { name = "open_all_doors", forward = false }, + [7] = { name = "open_all_doors_inv", forward = false }, + }, + open_doors_right = { + [5] = { name = "open_all_doors_inv", forward = true }, + [6] = { name = "open_all_doors", forward = true }, + }, + close_doors_right = { + [5] = { name = "open_all_doors_inv", forward = false }, + [6] = { name = "open_all_doors", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Railbus"), + description = _("These vehicles were diesel-powered, twin-axle rail buses of light construction. The motors were built into the chassis underneath the vehicle.") + }, + railVehicle = { + topSpeed = 90, + weight = 13, + engines = { + { type = "DIESEL", power = 110, tractiveEffort = 20 } + }, + configs = { + {}, + { + axles = { + "vehicle/train/schienenbus/lod_1_w_lod1.msh" + } + }, + { + axles = { + "vehicle/train/schienenbus/lod_0_w1.msh" + } + } + }, + soundSet = { name = "train_diesel", horn = "vehicle/truck_modern/horn.wav" } + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "PASSENGERS", capacity = 57 } + }, + loadSpeed = 2, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(5.1, 0.00, 1)), crew = true}, + -- passengers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.35, -0.6, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-0.35, -1.1, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-0.35, 0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.35, -0.4, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(0.35, -0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(0.35, 0.9, 1)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, -0.6, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.3, -1.1, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.3, 0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, -0.4, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.3, -0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.3, 0.9, 1)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.1, -0.6, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-4.1, -1.1, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-4.1, 0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.1, -0.4, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-3.1, -0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.1, 0.9, 1)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.1, -0.6, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(4.1, -1.1, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(4.1, 0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.1, -0.4, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(3.1, -0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(3.1, 0.9, 1)), crew = false}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.3, -0.6, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.1, -1.1, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.1, 0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.1, -0.4, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.1, -0.9, 1)), crew = false}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.1, 0.9, 1)), crew = false}, + }, + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/train/tgv.mdl b/res/models/model/vehicle/train/tgv.mdl new file mode 100755 index 0000000..23d326b --- /dev/null +++ b/res/models/model/vehicle/train/tgv.mdl @@ -0,0 +1,135 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 12.889254570007, 1.4482200145721, 5.9023561477661, + }, + bbMin = { + -10.999389801025, -1.4482200145721, -0.071776986122131, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/lod_0_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.5725002288818, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.5725002288818, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv/lod_0_interior_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/train/tgv/lod_0_logos_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 26.0, -60.0, 0.0), vec3.new( 11.98, 0.8, 1.785)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( -40.0, -60.0, 0.0), vec3.new( 11.98, -0.82, 1.775)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 2190, + + }, + }, + metadata = { + railVehicle = { + topSpeed = 300, + weight = 70, + engines = { + { type = "ELECTRIC", power = 3225, tractiveEffort = 350 } + }, + configs = { + + { + axles = { + "vehicle/train/tgv/lod_0_w1.msh", + } + } + }, + soundSet = { name = "train_electric_modern", horn = "vehicle/train_electric_modern/horn_21_intercity125.wav" } + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(8.6, -0.7, 1.65)), crew = true}, + }, + carrier = "RAIL", + multipleUnitOnly = true, + + }, + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + + + }, + +} +end diff --git a/res/models/model/vehicle/train/tgv_w1.mdl b/res/models/model/vehicle/train/tgv_w1.mdl new file mode 100755 index 0000000..2bb6123 --- /dev/null +++ b/res/models/model/vehicle/train/tgv_w1.mdl @@ -0,0 +1,370 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 12.709259986877, 1.4965599775314, 4.1977119445801, + }, + bbMin = { + -9.551776663208, -1.4965599775314, -0.071776986122131, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + --[[ + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/tgv_lod_2_waggon_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.2533001899719, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_2_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.2533001899719, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_2_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.5516996383667, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_2_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.5516996383667, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 4000, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/tgv_lod_1_waggon_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.2533001899719, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_1_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.2533001899719, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_1_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.5516996383667, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_1_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.5516996383667, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 350, + + }, + ]]-- + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/lod_0_waggon_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/tgv/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.2533001899719, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.2533001899719, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_0_bogie1.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.5516996383667, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_0_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.5516996383667, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv/lod_0_interior_waggon_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1920, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 50, + runningCosts = -1, + + }, + railVehicle = { + configs = { + --[[ + { + axles = { + "vehicle/train/tgv/tgv_lod_2_w1.msh", + } + }, + { + axles = { + "vehicle/train/tgv/tgv_lod_1_w1.msh", + } + }, + ]]-- + { + axles = { + "vehicle/train/tgv/lod_0_w1.msh", + } + } + }, + engines = { + + }, + soundSet = { + horn = "", + name = "waggon_modern", + + }, + topSpeed = 300, + weight = 32.5, + + }, + transportVehicle = { + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-1.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-1.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-1.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-1.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-0.6, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(-0.6, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-0.6, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(-0.6, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(0.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(0.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(0.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(0.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(1.4, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(1.4, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(1.4, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(1.4, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(2.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(2.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(2.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(2.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(3.4, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(3.4, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(3.4, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(3.4, 1.2, 1)), }, + + + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-3.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-3.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-3.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-3.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-2.6, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(-2.6, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-2.6, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(-2.6, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-5.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-5.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-5.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-5.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-4.6, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(-4.6, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-4.6, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(-4.6, 1.2, 1)), }, + + + + }, + capacities = { + { + capacity = 52, + type = "PASSENGERS", + + }, + }, + carrier = "RAIL", + loadSpeed = 1, + multipleUnitOnly = true + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/tgv_w2.mdl b/res/models/model/vehicle/train/tgv_w2.mdl new file mode 100755 index 0000000..ec21f14 --- /dev/null +++ b/res/models/model/vehicle/train/tgv_w2.mdl @@ -0,0 +1,379 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + -- minus 1.9886 + bbMax = { + 10.151077047729, 1.4965599775314, 3.9383640289307, + }, + bbMin = { + -8.915776983643, -1.4965599775314, -0.071776986122131, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + --[[ + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/tgv_lod_2_waggon_mid.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.8803000450134, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_2_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.8803000450134, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_2_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.151000022888, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_2_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.9156999588013, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 4000, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/tgv_lod_1_waggon_mid.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.8803000450134, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/tgv_lod_1_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.8803000450134, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_1_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.151000022888, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_1_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.9156999588013, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 350, + + }, + ]]-- + + { + animations = { + + }, + children = { + { + id = "vehicle/train/tgv/lod_0_waggon_mid.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.8803000450134, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.8803000450134, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/tgv_lod_0_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.151000022888, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv_lod_0_bogie2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.9156999588013, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/tgv/lod_0_interior_waggon_mid.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1820, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 50, + runningCosts = -1, + + }, + railVehicle = { + configs = { + --[[ + { + axles = { + "vehicle/train/tgv/tgv_lod_2_w1.msh", + } + }, + { + axles = { + "vehicle/train/tgv/tgv_lod_1_w1.msh", + } + }, + ]]-- + { + axles = { + "vehicle/train/tgv/lod_0_w1.msh", + } + } + }, + engines = { + + }, + soundSet = { + horn = "", + name = "waggon_modern", + + }, + topSpeed = 300, + weight = 30, + + }, + transportVehicle = { + capacities = { + { + capacity = 92, + type = "PASSENGERS", + + }, + }, + carrier = "RAIL", + loadSpeed = 1, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(3.9, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(3.9, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(3.9, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(3.9, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(2.8, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(2.8, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(2.8, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(2.8, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(0.6, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(0.6, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(0.6, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(0.6, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(1.6, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(1.6, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(1.6, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(1.6, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-1.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-1.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-1.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-1.5, -1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-.4, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-.4, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-.4, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-.4, -1.2, 1)), }, + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-3.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-3.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-3.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-3.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-2.6, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(-2.6, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-2.6, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(-2.6, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-5.5, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(-5.5, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(-5.5, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(-5.5, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-4.6, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(-4.6, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(-4.6, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(-4.6, 1.2, 1)), }, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(4.9, 0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20, 0.0, 0.0), vec3.new(4.9, 1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0, 0.0, 0.0), vec3.new(4.9, -0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20, 0.0, 0.0), vec3.new(4.9, -1.2, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(5.85, -0.5, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200, 0.0, 0.0), vec3.new(5.85, -1, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180, 0.0, 0.0), vec3.new(5.85, 0.7, 1)), }, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200, 0.0, 0.0), vec3.new(5.85, 1.2, 1)), }, + + + + }, + multipleUnitOnly = true + }, + }, + +} +end diff --git a/res/models/model/vehicle/train/twindexx.mdl b/res/models/model/vehicle/train/twindexx.mdl new file mode 100755 index 0000000..e3d6a57 --- /dev/null +++ b/res/models/model/vehicle/train/twindexx.mdl @@ -0,0 +1,511 @@ + +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 14.608251571655, 1.4764100313187, 5.8900079727173, + }, + bbMin = { + -11.848377227783, -1.4764100313187, -0.064345985651016, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/twindexx/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8775000572205, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.8773999214172, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.8775000572205, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_d2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 3.8773999214172, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.1443004608154, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -8.2482995986938, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "opend1", forward = true }, + { name = "opend2", forward = true }, + { name = "opend1", forward = true }, + { name = "opend2", forward = true }, + }, + close_all_doors = { + { name = "opend1", forward = false }, + { name = "opend2", forward = false }, + { name = "opend1", forward = false }, + { name = "opend2", forward = false }, + }, + open_doors_left = { + [1] = { name = "opend1", forward = true }, + [2] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [1] = { name = "opend1", forward = false }, + [2] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend2", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend2", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 450, + visibleTo = 2320, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/twindexx/lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8775000572205, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.8773999214172, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.8775000572205, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_d2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 3.8773999214172, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx_lod_1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.1443004608154, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx_lod_1_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -8.2482995986938, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + { name = "opend1", forward = true }, + { name = "opend2", forward = true }, + { name = "opend1", forward = true }, + { name = "opend2", forward = true }, + }, + close_all_doors = { + { name = "opend1", forward = false }, + { name = "opend2", forward = false }, + { name = "opend1", forward = false }, + { name = "opend2", forward = false }, + }, + open_doors_left = { + [1] = { name = "opend1", forward = true }, + [2] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [1] = { name = "opend1", forward = false }, + [2] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend2", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend2", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 450, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/twindexx/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8775000572205, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.8773999214172, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -3.8775000572205, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_d2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 3.8773999214172, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.1443004608154, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -8.2482995986938, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx/lod_0_interior_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.4177, 0, 0, 1, + }, + type = "MESH", + + }, + + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.7,0.7),transf.degToRad( 14.0, -35.0, 0.0), vec3.new( 13.79, 0.66, 2.22)), + type = "MESH", + }, + + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.7,0.7),transf.degToRad( -14.0, -35.0, 0.0), vec3.new( 13.79, -0.66, 2.22)), + type = "MESH", + }, + { + id = "vehicle/train/twindexx/lod_0_logos_front.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + { name = "opend1", forward = true }, + { name = "opend2", forward = true }, + { name = "opend1", forward = true }, + { name = "opend2", forward = true }, + }, + close_all_doors = { + { name = "opend1", forward = false }, + { name = "opend2", forward = false }, + { name = "opend1", forward = false }, + { name = "opend2", forward = false }, + }, + open_doors_left = { + [1] = { name = "opend1", forward = true }, + [2] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [1] = { name = "opend1", forward = false }, + [2] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend2", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend2", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 150, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + description = { + description = "", + icon = "", + name = "DUALSTOX", + smallIcon = "", + + }, + maintenance = { + lifespan = 50, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/train/twindexx/lod_0_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/twindexx/lod_1_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/twindexx/lod_0_w1.msh", + }, + fakeBogies = { + + }, + + }, + }, + engines = { + { + power = 1900, + tractiveEffort = 280, + type = "ELECTRIC", + + }, + }, + soundSet = { + horn = "vehicle/train_electric_modern/horn_2.wav", + name = "train_electric_modern", + + }, + topSpeed = 200, + weight = 55, + + }, + transportVehicle = { + capacities = { + { + capacity = 90, + type = "PASSENGERS", + + }, + }, + carrier = "RAIL", + loadSpeed = 4, + seats = { + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(11.8, -0.1, 1.4)), crew = true, standing = false }, + + -- passengers + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, -0.7, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, -1.1, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, 0.5, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, 0.95, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, 0.7, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, 1.1, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, -0.5, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, -0.9, 0.5)), }, + + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, -0.7, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, -1.1, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, 0.5, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, 0.95, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, 0.7, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, 1.1, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, -0.5, 0.5)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, -0.95, 0.5)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.95, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.9, 2.6)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.1, -0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.1, -1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.1, 0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.1, 0.95, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.1, 0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.1, 1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.1, -0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.1, -0.9, 2.6)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, -0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, -1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, 0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, 0.95, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, 0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, 1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, -0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, -0.9, 2.6)), }, + + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, -0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, -1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, 0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, 0.95, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, 0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, 1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, -0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, -0.95, 2.6)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.5, -0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.5, -1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.5, 0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.5, 0.95, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.5, 0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.5, 1.1, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.5, -0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.5, -0.95, 2.6)), }, + + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, 0.5, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, 0.95, 2.6)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.8, 0.7, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.8, 1.1, 2.6)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-4.5, 0.9, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-5, 0.9, 2.6)), }, + + { group =5, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-4.5, -0.9, 2.6)), }, + { group =5, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-5, -0.9, 2.6)), }, + + }, + multipleUnitOnly = true, + + }, + + }, + +} +end diff --git a/res/models/model/vehicle/train/twindexx_w1.mdl b/res/models/model/vehicle/train/twindexx_w1.mdl new file mode 100755 index 0000000..f831733 --- /dev/null +++ b/res/models/model/vehicle/train/twindexx_w1.mdl @@ -0,0 +1,551 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 13.272152900696, 1.4717669487, 4.8094282150269, + }, + bbMin = { + -13.272152900696, -1.4717669487, -0.064345985651016, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/train/twindexx/lod_2_d5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_d6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_d5.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_2_d6.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -9.6660995483398, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.6660995483398, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx/lod_2_back.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + { name = "opend5", forward = true }, + { name = "opend6", forward = true }, + { name = "opend5", forward = true }, + { name = "opend6", forward = true }, + }, + close_all_doors = { + { name = "opend5", forward = false }, + { name = "opend6", forward = false }, + { name = "opend5", forward = false }, + { name = "opend6", forward = false }, + }, + open_doors_left = { + [1] = { name = "opend5", forward = true }, + [2] = { name = "opend6", forward = true }, + }, + close_doors_left = { + [1] = { name = "opend5", forward = false }, + [2] = { name = "opend6", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend5", forward = true }, + [4] = { name = "opend6", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend5", forward = false }, + [4] = { name = "opend6", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 450, + visibleTo = 2140, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/twindexx/lod_1_d5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_d6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_d5.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_1_d6.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx_lod_1_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -9.6660995483398, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx_lod_1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.6660995483398, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx/lod_1_back.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + { name = "opend5", forward = true }, + { name = "opend6", forward = true }, + { name = "opend5", forward = true }, + { name = "opend6", forward = true }, + }, + close_all_doors = { + { name = "opend5", forward = false }, + { name = "opend6", forward = false }, + { name = "opend5", forward = false }, + { name = "opend6", forward = false }, + }, + open_doors_left = { + [1] = { name = "opend5", forward = true }, + [2] = { name = "opend6", forward = true }, + }, + close_doors_left = { + [1] = { name = "opend5", forward = false }, + [2] = { name = "opend6", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend5", forward = true }, + [4] = { name = "opend6", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend5", forward = false }, + [4] = { name = "opend6", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 450, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/train/twindexx/lod_0_d5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_d6.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_d5.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_d6.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 5.2399997711182, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -9.6660995483398, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 9.6660995483398, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/train/twindexx/lod_0_back.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/train/twindexx/lod_0_interior_back.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/train/twindexx/lod_0_logos_back.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + { name = "opend5", forward = true }, + { name = "opend6", forward = true }, + { name = "opend5", forward = true }, + { name = "opend6", forward = true }, + }, + close_all_doors = { + { name = "opend5", forward = false }, + { name = "opend6", forward = false }, + { name = "opend5", forward = false }, + { name = "opend6", forward = false }, + }, + open_doors_left = { + [1] = { name = "opend5", forward = true }, + [2] = { name = "opend6", forward = true }, + }, + close_doors_left = { + [1] = { name = "opend5", forward = false }, + [2] = { name = "opend6", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend5", forward = true }, + [4] = { name = "opend6", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend5", forward = false }, + [4] = { name = "opend6", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 150, + + }, + }, + metadata = { + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 50, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/train/twindexx/lod_2_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/twindexx/lod_1_w1.msh", + }, + fakeBogies = { + + }, + + }, + { + axles = { + "vehicle/train/twindexx/lod_0_w1.msh", + }, + fakeBogies = { + + }, + + }, + }, + engines = { + + }, + soundSet = { + horn = "", + name = "waggon_modern", + + }, + topSpeed = 200, + weight = 45, + + }, + transportVehicle = { + capacities = { + { + capacity = 152, + type = "PASSENGERS", + + }, + }, + carrier = "RAIL", + loadSpeed = 4, + seats = { + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, -0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, -1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, 0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, 0.95, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, 0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, 1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, -0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.3, -0.9, 0.5)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4, -0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4, -1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4, 0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4, 0.95, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3, 0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3, 1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3, -0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3, -0.9, 0.5)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, -0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, -1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, 0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, 0.95, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.3, 0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.3, 1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.3, -0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.3, -0.9, 0.5)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3, -0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3, -1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3, 0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3, 0.95, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4, 0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4, 1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4, -0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4, -0.9, 0.5)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45, -0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45, -1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45, 0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.45, 0.95, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.45, 0.7, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.45, 1.1, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.45, -0.5, 0.5)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.45, -0.9, 0.5)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.9, -0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.5, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.5, -0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.2, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.2, -0.95, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.2, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-9.2, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.2, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.2, 1.1, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10.9, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10.9, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10.9, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10.9, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-9.9, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-9.9, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-9.9, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-9.9, -0.95, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.7, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.7, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.7, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.7, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.95, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.6, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.6, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.6, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.6, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.6, -0.95, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-5.5, 0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-6, 0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-6.5, 0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-7, 0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-5.5, -0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-6, -0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-6.5, -0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-7, -0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(5.5, 0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(6, 0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(6.5, 0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(7, 0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(5.5, -0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(6, -0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(6.5, -0.9, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(7, -0.9, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(8.2, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(8.2, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(9.2, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(9.2, 1.1, 2.6)), }, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(9.9, -0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(9.9, -1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(9.9, 0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(9.9, 0.95, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10.9, 0.7, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10.9, 1.1, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10.9, -0.5, 2.6)), }, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10.9, -0.95, 2.6)), }, + + + + }, + multipleUnitOnly = true, + + }, + + }, + +} +end diff --git a/res/models/model/vehicle/tram/be4_6mirage.mdl b/res/models/model/vehicle/tram/be4_6mirage.mdl new file mode 100755 index 0000000..564e435 --- /dev/null +++ b/res/models/model/vehicle/tram/be4_6mirage.mdl @@ -0,0 +1,324 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/be4_6mirage_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.8193001747131, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/tram/be4_6mirage_lod_0_mid.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.22079999744892, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/tram/be4_6mirage_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.377799987793, 0, 0, 1, + }, + type = "GROUP", + }, + }, + events = { + open_all_doors = { + [1] = { + forward = true, + name = "open_all_doors", + + }, + [2] = { + forward = true, + name = "open_all_doors", + + }, + [3] = { + forward = true, + name = "open_all_doors", + + }, + }, + close_all_doors = { + [1] = { + forward = false, + name = "open_all_doors", + + }, + [2] = { + forward = false, + name = "open_all_doors", + + }, + [3] = { + forward = false, + name = "open_all_doors", + + }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, { + children = { + { + id = "vehicle/tram/be4_6mirage_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.8193001747131, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/tram/be4_6mirage_lod_0_mid.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.22079999744892, 0, 0, 1, + }, + type = "GROUP", + }, { + id = "vehicle/tram/be4_6mirage_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.377799987793, 0, 0, 1, + }, + type = "GROUP", + }, + }, + events = { + open_all_doors = { + [1] = { + forward = true, + name = "open_all_doors", + + }, + [2] = { + forward = true, + name = "open_all_doors", + + }, + [3] = { + forward = true, + name = "open_all_doors", + + }, + }, + close_all_doors = { + [1] = { + forward = false, + name = "open_all_doors", + + }, + [2] = { + forward = false, + name = "open_all_doors", + + }, + [3] = { + forward = false, + name = "open_all_doors", + + }, + }, + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 1760, + + }, + }, + metadata = { + description = { + name = _("Be 4/6 Mirage"), + description = _("The big cost-overrun during the acquisition of this tram led to its nickname \"Mirage\", a fighter plane which also cost much more than foreseen.") + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/tram/be4_6mirage/lod_0_w1.msh", + }, + fakeBogies = { + { group = 1, position = -0.2387, offset = -2.0459 }, + --{ group = 26, position = -0.22, offset = 0 }, + { group = 31, position = -0.2387, offset = 2.0459 } + }, + }, { + axles = { + "vehicle/tram/be4_6mirage/lod_0_w1.msh", }, + fakeBogies = { + { group = 1, position = -0.2387, offset = -2.0459 }, + --{ group = 26, position = -0.22, offset = 0 }, + { group = 31, position = -0.2387, offset = 2.0459 } + }, + } + }, + topSpeed = 60, + weight = 26, + engines = { + { type = "ELECTRIC", power = 300, tractiveEffort = 50 } + }, + soundSet = "tram_modern" + }, + transportVehicle = { + carrier = "TRAM", + capacities = { + { + type = "PASSENGERS", + capacity = 90, + } + }, + loadSpeed = 7, + seats = { + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.7, -0.1, .75)), crew = true, standing = false}, + -- front + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.0, 0.65, 0.75)) }, + { group =51, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.5, 0.65, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(-95.0, 0.0, 0.0), vec3.new(1.0, -0.45, 0.75)), standing = true }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.15, 0.05, 0.75)) }, + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.15, 0.55, 0.75)) }, + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.15, -0.65, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.85, 0.05, 0.75)) }, + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.85, 0.55, 0.75)) }, + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.85, -0.65, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.6, 0.05, 0.75)) }, + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.6, 0.55, 0.75)) }, + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.6, -0.65, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, 0.05, 0.75)) }, + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, 0.55, 0.75)) }, + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.3, -0.65, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.0, 0.05, 0.75)) }, + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.0, 0.55, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, 0.55, 0.75)) }, + + + { group =51, transf = transf.rotZYXTransl(transf.degToRad(-85.0, 0.0, 0.0), vec3.new(-3.3, -0.4, 0.75)), standing = true }, + + + -- mid + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.15, 0.05, 0.75)) }, + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.15, 0.55, 0.75)) }, + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.15, -0.65, 0.75)) }, + + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.35, 0.05, 0.75)) }, + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.35, 0.55, 0.75)) }, + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.35, -0.65, 0.75)) }, + + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.35, 0.05, 0.75)) }, + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.35, 0.55, 0.75)) }, + + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.05, 0.05, 0.75)) }, + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.05, 0.55, 0.75)) }, + + + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(-85.0, 0.0, 0.0), vec3.new(-1.1, -0.4, 0.75)), standing = true }, + { group = 29, transf = transf.rotZYXTransl(transf.degToRad(-105.0, 0.0, 0.0), vec3.new(-0.4, -0.4, 0.75)), standing = true }, + + + -- back + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.45, 0.05, 0.75)) }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.45, 0.55, 0.75)) }, + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.45, -0.65, 0.75)) }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.75, 0.05, 0.75)) }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.75, 0.55, 0.75)) }, + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.75, -0.65, 0.75)) }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.05, 0.05, 0.75)) }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.05, 0.55, 0.75)) }, + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.05, -0.65, 0.75)) }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.35, 0.05, 0.75)) }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.35, 0.55, 0.75)) }, + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.35, -0.65, 0.75)) }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.65, 0.05, 0.75)) }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.65, 0.55, 0.75)) }, + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.65, -0.65, 0.75)) }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.05, 0.05, 0.75)) }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.05, 0.55, 0.75)) }, + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.05, -0.65, 0.75)) }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(-85.0, 0.0, 0.0), vec3.new(-1.4, 0.65, 0.75)), standing = true }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(-105.0, 0.0, 0.0), vec3.new(-0.7, 0.65, 0.75)), standing = true }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(-45.0, 0.0, 0.0), vec3.new(-1.9, 0.45, 0.75)), standing = true }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.05, -0.35, 0.75)), standing = true }, + + + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(-85.0, 0.0, 0.0), vec3.new(-1.4, -0.4, 0.75)), standing = true }, + { group = 15, transf = transf.rotZYXTransl(transf.degToRad(-15.0, 0.0, 0.0), vec3.new(-0.5, -0.4, 0.75)), standing = true }, + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/tram/be5_6.mdl b/res/models/model/vehicle/tram/be5_6.mdl new file mode 100755 index 0000000..f63085f --- /dev/null +++ b/res/models/model/vehicle/tram/be5_6.mdl @@ -0,0 +1,394 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 17.189210891724, 1.1466519832611, 4.7869329452515, + }, + bbMin = { + -17.189210891724, -1.396271944046, -0.05799201130867, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/be5_6_lod_0_connector.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 8.6990995407104, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_connector.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.979199886322, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_connector.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9839000701904, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_connector.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -8.7013998031616, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_mid_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.8449997901917, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_mid_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.8449997901917, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11.701299667358, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_mid.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/be5_6_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 11.701299667358, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [5] = { + forward = true, + name = "open_all_doors", + }, + [6] = { + forward = true, + name = "open_all_doors", + }, + [7] = { + forward = true, + name = "open_all_doors", + }, + [8] = { + forward = true, + name = "open_all_doors", + }, + [9] = { + forward = true, + name = "open_all_doors", + }, + }, + close_all_doors = { + [5] = { + forward = false, + name = "open_all_doors", + }, + [6] = { + forward = false, + name = "open_all_doors", + }, + [7] = { + forward = false, + name = "open_all_doors", + }, + [8] = { + forward = false, + name = "open_all_doors", + }, + [9] = { + forward = false, + name = "open_all_doors", + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 2510, + + }, + }, + metadata = { + description = { + name = _("Be 5/6 Cobra"), + description = _("As the first complete low floor tram, it runs through the city like a snake, thanks to its four joints. This gave it the nickname \"Cobra\".") + }, + availability = { + yearFrom = 3000, + yearTo = 3000, + + }, + cost = { + price = -1, + + }, + maintenance = { + lifespan = 40, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/tram/be5_6/lod_0_w1.msh", + }, + fakeBogies = { + { + group = 1, + offset = -2.0452001094818, + position = 11.701299667358, + + }, { + group = 1, + offset = 1.8502999544144, + position = 5.8449997901917, + + }, { + group = 3, + offset = -1.8006000518799, + position = 5.8449997901917, + + }, { + group = 3, + offset = 2.0186998844147, + position = 0, + + }, { + group = 5, + offset = -2.0269000530243, + position = 0, + + }, { + group = 5, + offset = 1.8006000518799, + position = -5.8449997901917, + + }, { + group = 7, + offset = -1.8502999544144, + position = -5.8449997901917, + + }, { + group = 7, + offset = 2.039400100708, + position = -11.701299667358, + + }, { + group = 9, + offset = 0, + position = -5.8449997901917, + + }, { + group = 19, + offset = 0, + position = 5.8449997901917, + + }, + }, + + }, + }, + engines = { + { + power = 625, + tractiveEffort = 80, + type = "ELECTRIC", + + }, + }, + soundSet = { + horn = "", + name = "tram_modern", + + }, + topSpeed = 70, + weight = 39, + + }, + transportVehicle = { + capacities = { + { + capacity = 120, + type = "PASSENGERS", + + }, + }, + carrier = "TRAM", + loadSpeed = 14, + + seats = { + + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.1, -0.1, .4)), crew = true, standing = false}, + -- front + + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.8, 0.75, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.8, 0.3, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.8, -0.9, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.8, -0.5, 0.24)) }, + + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.75, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.3, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.3, -0.9, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.5, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.3, -0.75, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.3, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.3, 0.9, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 0.5, 0.24)) }, + + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.1, 0.75, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, 0.3, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.1, -0.9, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, -0.5, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.2, -0.75, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.2, -0.3, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.2, 0.9, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.2, 0.5, 0.24)) }, + + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.7, -0.75, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.7, -0.3, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.7, 0.9, 0.24)) }, + { group = 49, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.7, 0.5, 0.24)) }, + + --mid_front + + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.7, 0.75, 0.24)) }, + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.7, 0.3, 0.24)) }, + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.4, -0.9, 0.24)) }, + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-0.4, -0.9, 0.24)) }, + + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.9, 0.75, 0.24)) }, + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.9, 0.3, 0.24)) }, + + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.1, 0.75, 0.24)),standing = true }, + { group = 20, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.99, 0.7, 0.24)),standing = true }, + + --mid + + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.8, 0.75, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.8, 0.3, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.8, -0.9, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.8, -0.5, 0.24)) }, + + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.75, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.3, 0.24)) }, + + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.3, -0.75, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.3, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.3, 0.9, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 0.5, 0.24)) }, + + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.1, 0.75, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, 0.3, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.1, -0.9, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, -0.5, 0.24)) }, + + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.2, 0.9, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.2, 0.5, 0.24)) }, + + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.7, -0.75, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.7, -0.3, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.7, 0.9, 0.24)) }, + { group = 40, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.7, 0.5, 0.24)) }, + + --mid_back + + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(2, 0.75, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2, 0.3, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.1, 0.75, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.4, -0.9, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-0.4, -0.9, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.4, -0.4, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.4, -0.4, 0.24)) }, + + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2, 0.75, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2, 0.3, 0.24)) }, + + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.3, 0.75, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-0.4, 0.75, 0.24)) }, + { group = 10, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(.3, 0.75, 0.24)) }, + + --back + + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.8, 0.75, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.8, 0.3, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.8, -0.9, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.8, -0.5, 0.24)) }, + + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.3, 0.75, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, 0.3, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.3, -0.9, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.3, -0.5, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.3, -0.75, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, -0.3, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.3, 0.9, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.3, 0.5, 0.24)) }, + + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.1, 0.75, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, 0.3, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.1, -0.9, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.1, -0.5, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.2, -0.75, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.2, -0.3, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.2, 0.9, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.2, 0.5, 0.24)) }, + + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.7, -0.75, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.7, -0.3, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.7, 0.9, 0.24)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.7, 0.5, 0.24)) }, + + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-4.4, -0.6, 0.54)) }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-4.4, 0.7, 0.54)) }, + + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-2.7, 0.8, 0.24)),standing = true }, + { group = 30, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-3.5, 0.8, 0.24)),standing = true }, + + + + } + }, + + }, + +} +end diff --git a/res/models/model/vehicle/tram/dampftram.mdl b/res/models/model/vehicle/tram/dampftram.mdl new file mode 100755 index 0000000..7bdfab8 --- /dev/null +++ b/res/models/model/vehicle/tram/dampftram.mdl @@ -0,0 +1,133 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/dampftram_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/tram/dampftram_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.1901, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1180, + + }, + }, + metadata = { + description = { + name = _("Steam tram"), + description = _("Twin axle steam tram, used for example in Vienna as \"Dampftramway\".") + }, + railVehicle = { + configs = { + { + axles = { "vehicle/tram/dampftram/lod_0_w3.msh","vehicle/tram/dampftram/lod_0_w1.msh",}, + + } + }, + topSpeed = 20, + weight = 8, + engines = { + { type = "STEAM", power = 20, tractiveEffort = 6 } + }, + soundSet = "tram_old" + }, + transportVehicle = { + carrier = "TRAM", + capacities = { + { type = "PASSENGERS", capacity = 28 } + }, + loadSpeed = 2, + + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.6, -0.1, .82)), crew = true, standing = true}, + -- front + + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.0, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.5, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.5, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(2, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.5, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.5, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1, 0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-2, 0.68, 0.45)) }, + + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.0, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.5, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.5, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(2, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.5, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1.5, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-2, -0.68, 0.45)) }, + + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.68, 0.45)) }, + { group = 11 , transf = transf.rotZYXTransl(transf.degToRad(-60.0, 0.0, 0.0), vec3.new(-3, -0.3, 0.5)),standing = true }, + + } + }, + availability = { + yearFrom = 1877, + yearTo = 1930 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + particleSystem = { + emitters = { + { + position = { 1.0999, .0, 3.3066}, + velocity = { .0, .0, 7.0 }, + color = { .3, .3, .3 }, + frequency = 60, + lifeTime = 10.0, + size01 = { .7, 8.0 }, + child = 2 + }, + } + } + + + }, + +} +end diff --git a/res/models/model/vehicle/tram/halle.mdl b/res/models/model/vehicle/tram/halle.mdl new file mode 100755 index 0000000..feccc1e --- /dev/null +++ b/res/models/model/vehicle/tram/halle.mdl @@ -0,0 +1,219 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 3.4578530788422, 0.98381000757217, 4.8104958534241, + }, + bbMin = { + -3.4319260120392, -0.98381000757217, -0.33427900075912, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/halle/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/tram/halle/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.881, -0.8389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/tram/halle/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.881, 0.8389, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/tram/halle/lod_0_d2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.881, -0.8389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/tram/halle/lod_0_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.881, 0.8389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/tram/halle/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.8475, 0, 0.304, 1, + }, + type = "MESH", + + }, { + id = "vehicle/tram/halle/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8475, 0, 0.304, 1, + }, + type = "MESH", + + }, { + id = "vehicle/tram/halle/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.4,1.4,1.4),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 3.46, 0.0, 3.16)), + type = "MESH", + }, { + id = "vehicle/tram/halle/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + + }, + events = { + close_all_doors = { + [2] = { + forward = false, + name = "opend1", + }, + [3] = { + forward = false, + name = "opend2", + }, + [4] = { + forward = false, + name = "opend2", + }, + [5] = { + forward = false, + name = "opend1", + }, + }, + open_all_doors = { + [2] = { + forward = true, + name = "opend1", + }, + [3] = { + forward = true, + name = "opend2", + }, + [4] = { + forward = true, + name = "opend2", + }, + [5] = { + forward = true, + name = "opend1", + }, + }, + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1210, + + }, + }, + metadata = { + description = { + name = _("Halle tram"), + description = _("Twin axle electrical tram with open platforms on both ends, used by the \"Allgemeine Elektricitaets-Gesellschaft Stadtbahn Halle\".") + }, + railVehicle = { + configs = { + { + axles = { "vehicle/tram/halle/lod_0_w1.msh"}, + + } + }, + topSpeed = 27, + weight = 12, + engines = { + { type = "ELECTRIC", power = 50, tractiveEffort = 20 } + }, + soundSet = "tram_old" + }, + transportVehicle = { + carrier = "TRAM", + capacities = { + { type = "PASSENGERS", capacity = 36 } + }, + loadSpeed = 2, + + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.8, -0.1, .64)), crew = true, standing = true}, + -- front + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.0, 0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.5, 0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.5, 0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1, 0.6, 0.45)) }, + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.5, 0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.5, 0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1, 0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-2, 0.6, 0.45)) }, + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.0, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.5, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.5, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(2, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.5, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1.5, -0.6, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.6, 0.45)) }, + + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.68, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-60.0, 0.0, 0.0), vec3.new(-3, -0.3, 0.6)),standing = true }, + + } + }, + availability = { + yearFrom = 1887, + yearTo = 1945 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/tram/schst.mdl b/res/models/model/vehicle/tram/schst.mdl new file mode 100755 index 0000000..ba1bcde --- /dev/null +++ b/res/models/model/vehicle/tram/schst.mdl @@ -0,0 +1,166 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/schst_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/tram/schst_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.8755, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + close_all_doors = { + [1] = { + forward = true, + name = "close_doors", + }, + [2] = { + forward = true, + name = "close_doors", + }, + }, + open_all_doors = { + [1] = { + forward = true, + name = "open_doors", + }, + [2] = { + forward = true, + name = "open_doors", + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1700, + + }, + }, + metadata = { + description = { + name = _("Ce 2/2 SchSt"), + description = _("Twin axle electrical tram from the game's home town, Schaffhausen, Switzerland.") + }, + railVehicle = { + configs = { + { + axles = { "vehicle/tram/schst/lod_0_w1.msh" }, + + } + }, + topSpeed = 40, + weight = 20, + engines = { + { type = "ELECTRIC", power = 100, tractiveEffort = 40 } + }, + soundSet = "tram_old" + }, + transportVehicle = { + carrier = "TRAM", + capacities = { + { type = "PASSENGERS", capacity = 45 } + }, + loadSpeed = 4, + + seats = { + --driver + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.4, 0.0, 0.6)), crew = true, standing = true }, + -- front + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.0, 0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.5, 0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.5, 0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1, 0.6, 0.6)) }, + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.5, 0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.5, 0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1, 0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-2, 0.6, 0.6)) }, + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.0, -0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.5, -0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.5, -0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1, -0.7, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(2, -0.7, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.5, -0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1.5, -0.6, 0.6)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.6, 0.6)) }, + + + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.68, 0.45)) }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(-60.0, 0.0, 0.0), vec3.new(-3, -0.3, 0.6)),standing = true }, + { group =1 , transf = transf.rotZYXTransl(transf.degToRad(80.0, 0.0, 0.0), vec3.new(-3.5, 0.3, 0.6)),standing = true }, + + --back + + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.0, 0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.5, 0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.5, 0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1, 0.6, 0.6)) }, + + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.5, 0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1.5, 0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-1, 0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-2, 0.6, 0.6)) }, + + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.0, -0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.5, -0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.5, -0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1, -0.7, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(2, -0.7, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.5, -0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1.5, -0.6, 0.6)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.6, 0.6)) }, + + + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-1, -0.68, 0.45)) }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-60.0, 0.0, 0.0), vec3.new(-3, -0.3, 0.6)),standing = true }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(80.0, 0.0, 0.0), vec3.new(-2.8, 0.3, 0.6)),standing = true }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(-60.0, 0.0, 0.0), vec3.new(-3, -0.3, 0.6)),standing = true }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(120.0, 0.0, 0.0), vec3.new(2.3, 0.5, 0.6)),standing = true }, + {group =20 , transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(3.4, 0, 0.6)),standing = true }, + + + + + } + }, + availability = { + yearFrom = 1901, + yearTo = 1959 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/res/models/model/vehicle/tram/strassenbahn1850.mdl b/res/models/model/vehicle/tram/strassenbahn1850.mdl new file mode 100755 index 0000000..a4696f2 --- /dev/null +++ b/res/models/model/vehicle/tram/strassenbahn1850.mdl @@ -0,0 +1,132 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/strassenbahn_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/tram/strassenbahn_lod_0_guide.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9697, 0, 0.5662, 1, + }, + type = "GROUP", + + },{ + id = "ross1-lod0.grp", + transf = { + 0.32, 0, 0, 0, 0, 0.32, 0, 0, 0, 0, 0.32, 0, 5.3723, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + drive = { + [3] = { + forward = true, + name = "walk", + }, + }, + close_all_doors = { + [1] = { + forward = false, + name = "open_all_doors", + }, + }, + open_all_doors = { + [1] = { + forward = true, + name = "open_all_doors", + + }, + }, + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1010, + + }, + }, + metadata = { + description = { + name = _("Horse tram"), + description = _("The first trams in history were horse-driven. Thanks to the rail only one horse was enough.") + }, + railVehicle = { + configs = { + { + axles = { "vehicle/tram/strassenbahn_1850/lod_0_w.msh" }, + fakeBogies = { + { group = 13, position = 0, offset = 2.6137 } , + { group = 13, position = 4.8723, offset = 0.0 } , + { group = 15, position = 4.8723, offset = 0.0 } + } + + } + }, + topSpeed = 15, + weight = 1, + engines = { + { type = "HORSE", power = 2, tractiveEffort = 2 } + }, + soundSet = "tram_horse" + }, + transportVehicle = { + carrier = "TRAM", + capacities = { + { type = "PASSENGERS", capacity = 20 } + }, + loadSpeed = 2, + seats = { + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.4, -0.1, .64)), crew = true, standing = true}, + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(1.2, -0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.7, -0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(0.2, -0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.3, -0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-0.8, -0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(1.2, 0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.7, 0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(0.2, 0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.3, 0.6, .64)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-90.0, 0.0, 0.0), vec3.new(-0.8, 0.6, .64)),}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(90.0, 0.0, 0.0), vec3.new(-2.1, 0.2, .64)),standing = true}, + + + } + }, + availability = { + yearFrom = 1850, + yearTo = 1905 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + }, + + }, + +} +end diff --git a/res/models/model/vehicle/tram/typ1.mdl b/res/models/model/vehicle/tram/typ1.mdl new file mode 100755 index 0000000..dea75eb --- /dev/null +++ b/res/models/model/vehicle/tram/typ1.mdl @@ -0,0 +1,160 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/tram/typ1_lod_0_front.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5, 0, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/tram/typ1_lod_0_back.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.55, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + close_all_doors = { + [1] = { + forward = true, + name = "close_doors", + }, + [2] = { + forward = true, + name = "close_doors", + }, + }, + open_all_doors = { + [1] = { + forward = true, + name = "open_doors", + }, + [2] = { + forward = true, + name = "open_doors", + }, + }, + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 1850, + + }, + }, + metadata = { + description = { + name = _("Type T1"), + description = _("From this Type T1, built by Gothaer Waggonbau/Bothman, one unit is still running on a museum line.") + }, + railVehicle = { + configs = { + { + axles = { "vehicle/tram/typ1/lod_0_w1.msh" }, + + } + }, + topSpeed = 60, + weight = 26, + engines = { + { type = "ELECTRIC", power = 190, tractiveEffort = 45 } + }, + soundSet = "tram_old" + }, + transportVehicle = { + carrier = "TRAM", + capacities = { + { type = "PASSENGERS", capacity = 65 } + }, + loadSpeed = 4, + seats = { + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.2, 0.0, 0.7)), crew = true, standing = true }, + --passangers + --front + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.67, -0.55, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.7, -0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.67, 0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.7, 0.55, .7)),}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.25, -0.55, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.25, -0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.25, 0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.25, 0.55, .7)),}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.2, -0.55, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.2, -0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.2, 0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.2, 0.55, .7)),}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.7, -0.55, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.7, -0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.7, 0.35, .7)),}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.7, 0.55, .7)),}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-4, 0.15, .7)), standing = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(98.0, 0.0, 0.0), vec3.new(-2, 0.05, .7)), standing = true}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-98.0, 0.0, 0.0), vec3.new(1.7, 0.05, .7)), standing = true}, + + --back + { group =20, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.67, -0.55, 0.7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(2.7, -0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.67, 0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(2.7, 0.55, .7)),}, + + { group =20, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(0.25, -0.55, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(1.25, -0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(0.25, 0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.25, 0.55, .7)),}, + + { group =20, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.2, -0.55, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-0.2, -0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.2, 0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.2, 0.55, .7)),}, + + { group =20, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.7, -0.55, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-200.0, 0.0, 0.0), vec3.new(-1.7, -0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.7, 0.35, .7)),}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.7, 0.55, .7)),}, + + { group =20, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-4, 0.15, .7)), standing = true}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(98.0, 0.0, 0.0), vec3.new(-2, 0.05, .7)), standing = true}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-98.0, 0.0, 0.0), vec3.new(1.7, 0.05, .7)), standing = true}, + { group =20, transf = transf.rotZYXTransl(transf.degToRad(-98.0, 0.0, 0.0), vec3.new(3.9, 0.05, .7)), standing = true}, + + + + } + }, + availability = { + yearFrom = 1928, + yearTo = 1959 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + } + }, + +} +end diff --git a/res/models/model/vehicle/truck/40_tons.mdl b/res/models/model/vehicle/truck/40_tons.mdl new file mode 100755 index 0000000..dd6464f --- /dev/null +++ b/res/models/model/vehicle/truck/40_tons.mdl @@ -0,0 +1,271 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 6.8575000762939, 1.3035019636154, 3.2154319286346, + }, + bbMin = { + -5.9623646736145, -1.3035019636154, -0.0072360038757324, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/truck/40_tons_lod_2_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5114998817444, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/truck/40_tons_lod_2_trailer.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2750000953674, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 1190, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/truck/40_tons_lod_1_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5114998817444, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/truck/40_tons_lod_1_trailer.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2750000953674, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/truck/40_tons_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.5114998817444, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/truck/40_tons_lod_0_trailer.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2750000953674, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 150, + + }, + }, + metadata = { + availability = { + yearFrom = 1995, + yearTo = 2003, + + }, + cost = { + price = -1, + + }, + description = { + name = _("40 Tons Truck"), + description = _("A six axle semi-trailer truck, equipped with a V8 turbo diesel engine of 456 kW power."), + + }, + maintenance = { + lifespan = 35, + runningCosts = -1, + + }, + roadVehicle = { + configs = { + { + axles = { + "vehicle/truck/40_tons/lod_2_w2.msh", + }, + fakeBogies = { + { + group = 1, + offset = 0, + position = 4, + + }, { + group = 7, + offset = 0, + position = 2.5750000476837, + + }, { + group = 7, + offset = 0, + position = -1, + + }, + }, + wheels = { + "vehicle/truck/40_tons/lod_2_w1.msh", + }, + + }, { + axles = { + "vehicle/truck/40_tons/lod_1_w2.msh", + }, + fakeBogies = { + { + group = 1, + offset = 0, + position = 4, + + }, { + group = 7, + offset = 0, + position = 2.5750000476837, + + }, { + group = 7, + offset = 0, + position = -1, + + }, + }, + wheels = { + "vehicle/truck/40_tons/lod_1_w1.msh", + }, + + }, + { + axles = { + "vehicle/truck/40_tons/lod_0_w2.msh", + }, + fakeBogies = { + { + group = 1, + offset = 0, + position = 4, + + }, { + group = 14, + offset = 0, + position = 2.5750000476837, + + }, { + group = 14, + offset = 0, + position = -1, + + }, + }, + wheels = { + "vehicle/truck/40_tons/lod_0_w1.msh", + }, + + }, + }, + power = 456, + soundSet = { + horn = "", + name = "truck_modern", + + }, + topSpeed = 100, + tractiveEffort = 60, + weight = 10, + + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.3, 0.5, 0.7)), crew = true}, + }, + capacities = { + { type = "LOGS", capacity = 80 }, + { type = "LIVESTOCK", capacity = 80 }, + { type = "COAL", capacity = 80 }, + { type = "IRON_ORE", capacity = 80 }, + { type = "STONE", capacity = 80 }, + { type = "GRAIN", capacity = 80 }, + { type = "CRUDE", capacity = 80 }, + { type = "STEEL", capacity = 80 }, + { type = "PLANKS", capacity = 80 }, + { type = "PLASTIC", capacity = 80 }, + { type = "SLAG", capacity = 80 }, + { type = "OIL", capacity = 80 }, + { type = "CONSTRUCTION_MATERIALS", capacity = 80 }, + { type = "MACHINES", capacity = 80 }, + { type = "FUEL", capacity = 80 }, + { type = "TOOLS", capacity = 80 }, + { type = "FOOD", capacity = 80 }, + { type = "GOODS", capacity = 80 }, + }, + carrier = "ROAD", + loadSpeed = 5 + }, + + }, + +} +end diff --git a/res/models/model/vehicle/truck/benz1912_lkw.mdl b/res/models/model/vehicle/truck/benz1912_lkw.mdl new file mode 100755 index 0000000..60839e0 --- /dev/null +++ b/res/models/model/vehicle/truck/benz1912_lkw.mdl @@ -0,0 +1,261 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 2.9773321151733, 1.0804109573364, 2.9427399635315, + }, + bbMin = { + -2.9773321151733, -1.0804109573364, -0.47391700744629, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/truck/benz_1912_lkw/lod_2_benz1912lkw.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6878, 0, 0.4427, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.276, -0.8273, 0.464, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_2_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.276, 0.8273, 0.464, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 180, + visibleTo = 820, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/benz_1912_lkw/lod_1_benz1912lkw.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6878, 0, 0.4427, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.276, -0.8273, 0.464, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_1_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.276, 0.8273, 0.464, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 80, + visibleTo = 180, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/benz_1912_lkw/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6878, 0, 0.4936, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.276, -0.8273, 0.464, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_0_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.276, 0.8273, 0.464, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/benz_1912_lkw/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 80, + + }, + }, + metadata = { + description = { + name = _("Benz"), + description = _("A typical early lorry by Mercedes-Benz still running on solid rubber tires.") + }, + roadVehicle = { + topSpeed = 40, + weight = 1.5, + power = 35, + tractiveEffort = 5, + configs = { + { + }, + { + wheels = { + "vehicle/truck/benz_1912_lkw/lod_1_w2.msh", + }, + axles = { + "vehicle/truck/benz_1912_lkw/lod_1_w1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + }, + { + wheels = { + "vehicle/truck/benz_1912_lkw/lod_0_w2.msh", + }, + axles = { + "vehicle/truck/benz_1912_lkw/lod_0_w1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + } + }, + soundSet = "truck_old" + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.9, 0.36, 1)), crew = true}, + }, + carrier = "ROAD", + capacities = { + { type = "LOGS", capacity = 32 }, + { type = "LIVESTOCK", capacity = 32 }, + { type = "COAL", capacity = 32 }, + { type = "IRON_ORE", capacity = 32 }, + { type = "STONE", capacity = 32 }, + { type = "GRAIN", capacity = 32 }, + { type = "CRUDE", capacity = 32 }, + { type = "STEEL", capacity = 32 }, + { type = "PLANKS", capacity = 32 }, + { type = "PLASTIC", capacity = 32 }, + { type = "SLAG", capacity = 32 }, + { type = "OIL", capacity = 32 }, + { type = "CONSTRUCTION_MATERIALS", capacity = 32 }, + { type = "MACHINES", capacity = 32 }, + { type = "FUEL", capacity = 32 }, + { type = "TOOLS", capacity = 32 }, + { type = "FOOD", capacity = 32 }, + { type = "GOODS", capacity = 32 }, + }, + loadSpeed = 2 + }, + availability = { + yearFrom = 1912, + yearTo = 1913 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/truck/dmg_cannstatt.mdl b/res/models/model/vehicle/truck/dmg_cannstatt.mdl new file mode 100755 index 0000000..ca8cb86 --- /dev/null +++ b/res/models/model/vehicle/truck/dmg_cannstatt.mdl @@ -0,0 +1,255 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 1.9699840545654, 0.73222798109055, 2.4889459609985, + }, + bbMin = { + -2.3102269172668, -0.73222798109055, -0.47430199384689, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.4814, -0.4775, 0.411, 1, + }, + type = "MESH", + + },{ + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_2_w1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.4814, 0.4775, 0.411, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4057, 0, 0.4694, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 300, + visibleTo = 730, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_1_body.msh", + transf = { + 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_1_w1.msh", + transf = { + 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1.1, 0, 1.4814, -0.4775, 0.411, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_1_w1.msh", + transf = { + -1.1, 0, 0, 0, 0, -1.1, 0, 0, 0, 0, 1.1, 0, 1.4814, 0.4775, 0.411, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_1_w2.msh", + transf = { + 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1.1, 0, -1.4057, 0, 0.4694, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 300, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_0_body.msh", + transf = { + 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_0_w1.msh", + transf = { + 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1.1, 0, 1.4814, -0.4775, 0.411, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_0_w1.msh", + transf = { + -1.1, 0, 0, 0, 0, -1.1, 0, 0, 0, 0, 1.1, 0, 1.4814, 0.4775, 0.411, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_0_w2.msh", + transf = { + 1.1, 0, 0, 0, 0, 1.1, 0, 0, 0, 0, 1.1, 0, -1.4057, 0, 0.4694, 1, + }, + type = "MESH", + + }, + -- lights + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 2.168, -0.34, 1.077)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.8,0.8),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 2.168, 0.34, 1.077)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + + description = { + name = _("DMG Cannstatt"), + description = _("Daimler Motors Corporation was a German engine and later automobile manufacturer, in operation from 1890 until 1926.") + }, + roadVehicle = { + topSpeed = 25, + weight = 1, + power = 14, + tractiveEffort = 8, + configs = { + { + }, + { + wheels = { + "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_1_w1.msh", + }, + axles = { + "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_1_w2.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + }, + { + wheels = { + "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_0_w1.msh", + }, + axles = { + "vehicle/truck/dmg_cannstatt/dmg_cannstatt_lod_0_w2.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + } + }, + soundSet = "truck_old" + }, + transportVehicle = { + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.6, -0.1, 1.3)), crew = true}, + }, + carrier = "ROAD", + capacities = { + { type = "LOGS", capacity = 24 }, + { type = "LIVESTOCK", capacity = 24 }, + { type = "COAL", capacity = 24 }, + { type = "IRON_ORE", capacity = 24 }, + { type = "STONE", capacity = 24 }, + { type = "GRAIN", capacity = 24 }, + { type = "CRUDE", capacity = 24 }, + { type = "STEEL", capacity = 24 }, + { type = "PLANKS", capacity = 24 }, + { type = "PLASTIC", capacity = 24 }, + { type = "SLAG", capacity = 24 }, + { type = "OIL", capacity = 24 }, + { type = "CONSTRUCTION_MATERIALS", capacity = 24 }, + { type = "MACHINES", capacity = 24 }, + { type = "FUEL", capacity = 24 }, + { type = "TOOLS", capacity = 24 }, + { type = "FOOD", capacity = 24 }, + { type = "GOODS", capacity = 24 }, + }, + loadSpeed = 1.5 + }, + availability = { + yearFrom = 1890, + yearTo = 1913 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/truck/horse_cart.mdl b/res/models/model/vehicle/truck/horse_cart.mdl new file mode 100755 index 0000000..1a74f27 --- /dev/null +++ b/res/models/model/vehicle/truck/horse_cart.mdl @@ -0,0 +1,353 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/truck/horse_cart_lod_2_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_1_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4147, 0, 0, 1, + }, + type = "GROUP", + + }, + + }, + events = { + drive = { + + [2] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 940, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/horse_cart_lod_1_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_1_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4147, 0, 0, 1, + }, + type = "GROUP", + + }, + + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 40, + visibleTo = 400, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/horse_cart_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_0_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4147, 0, 0, 1, + }, + type = "GROUP", + + }, + + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 40, + + }, + }, + metadata = { + description = { + name = _("Horse cart"), + description = _("A two-horse vehicle with a simple twin axle carriage.") + }, + roadVehicle = { + topSpeed = 20, + weight = 1, + power = 2, + tractiveEffort = 2, + configs = { + + { + axles = { + "vehicle/truck/horse_cart/lod_2_w1.msh", + "vehicle/truck/horse_cart/lod_2_w2.msh", + }, + + fakeBogies = { { group = 84, position = 4.4147, offset = 0.0 } } + },{ + axles = { + "vehicle/truck/horse_cart/lod_1_w1.msh", + "vehicle/truck/horse_cart/lod_1_w2.msh", + }, + + fakeBogies = { { group = 84, position = 4.4147, offset = 0.0 } } + },{ + axles = { + "vehicle/truck/horse_cart/lod_0_w1.msh", + "vehicle/truck/horse_cart/lod_0_w2.msh", + }, + + fakeBogies = { { group = 86, position = 4.4147, offset = 0.0 } } + } + }, + soundSet = "truck_horse" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "OIL", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 } + } + } + } + }, + { type = "GOODS", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 18, 19, 20, 21, 22, 23, 24, 25} + } + } + } + }, + { type = "LOGS", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 } + } + } + } + }, + { type = "LIVESTOCK", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 38, 39} + } + } + } + }, + { type = "CRUDE", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 40, 41} + } + } + } + }, + { type = "STEEL", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 42,43} + } + } + } + }, + { type = "PLANKS", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 44,45} + } + } + } + }, + { type = "PLASTIC", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 46,47} + } + } + } + }, + { type = "CONSTRUCTION_MATERIALS", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 48,49} + } + } + } + }, + { type = "MACHINES", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 50,51} + } + } + } + }, + { type = "FUEL", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 52,53} + } + } + } + }, + { type = "TOOLS", capacity = 20,loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 54,55} + } + } + } + }, + { type = "FOOD", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 56,57} + } + } + } + }, + { type = "GRAIN", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 58,59} + } + } + } + }, + { type = "STONE", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 60,63} + } + } + } + }, + { type = "COAL", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 66,69} + } + } + } + }, + { type = "IRON_ORE", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 72,75} + } + } + } + }, + { type = "SLAG", capacity = 20, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 78,81} + } + } + } + }, + + }, + loadSpeed = 1, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.1, 1.45)), crew = true}, + }, + }, + availability = { + yearFrom = 1870, + yearTo = 1913 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 20 + } + }, + +} +end diff --git a/res/models/model/vehicle/truck/horsewagon_1850.mdl b/res/models/model/vehicle/truck/horsewagon_1850.mdl new file mode 100755 index 0000000..ac606d7 --- /dev/null +++ b/res/models/model/vehicle/truck/horsewagon_1850.mdl @@ -0,0 +1,158 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/truck/horsewagon_1850_lod_1_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_1_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.0147, 0, 0, 1, + }, + type = "GROUP", + + }, + + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 70, + visibleTo = 810, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/truck/horsewagon_1850_lod_0_body.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/bus/postkutsche_lod_0_horses.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.0147, 0, 0, 1, + }, + type = "GROUP", + + }, + + }, + events = { + drive = { + [2] = { + forward = true, + name = "drive", + }, + }, + + }, + matConfigs = { + { + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 70, + + }, + }, + metadata = { + description = { + name = _("Horse wagon"), + description = _("A two-horse vehicle with a simple twin axle carriage.") + }, + roadVehicle = { + topSpeed = 15, + weight = 1.5, + power = 2, + tractiveEffort = 1.8, + configs = { + { + axles = { + "vehicle/truck/horse_wagon/horse_wagon_lod_1_w1.msh", + "vehicle/truck/horse_wagon/horse_wagon_lod_1_w2.msh", + }, + fakeBogies = { { group = 7, position = 4.0147, offset = 0.0 } } + }, + { + axles = { + "vehicle/truck/horse_wagon/horse_wagon_lod_0_w1.msh", + "vehicle/truck/horse_wagon/horse_wagon_lod_0_w2.msh", + }, + fakeBogies = { { group = 7, position = 4.0147, offset = 0.0 } } + } + }, + soundSet = "truck_horse" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "LOGS", capacity = 16 }, + { type = "LIVESTOCK", capacity = 16 }, + { type = "COAL", capacity = 16 }, + { type = "IRON_ORE", capacity = 16 }, + { type = "STONE", capacity = 16 }, + { type = "GRAIN", capacity = 16 }, + { type = "CRUDE", capacity = 16 }, + { type = "STEEL", capacity = 16 }, + { type = "PLANKS", capacity = 16 }, + { type = "PLASTIC", capacity = 16 }, + { type = "SLAG", capacity = 16 }, + { type = "OIL", capacity = 16 }, + { type = "CONSTRUCTION_MATERIALS", capacity = 16 }, + { type = "MACHINES", capacity = 16 }, + { type = "FUEL", capacity = 16 }, + { type = "TOOLS", capacity = 16 }, + { type = "FOOD", capacity = 16 }, + { type = "GOODS", capacity = 16 }, + }, + loadSpeed = 1, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -0.1, 0.9)), crew = true}, + }, + }, + availability = { + yearFrom = 1850, + yearTo = 1907 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 15 + } + }, + +} +end diff --git a/res/models/model/vehicle/truck/man_19_304_1970.mdl b/res/models/model/vehicle/truck/man_19_304_1970.mdl new file mode 100755 index 0000000..b5671c0 --- /dev/null +++ b/res/models/model/vehicle/truck/man_19_304_1970.mdl @@ -0,0 +1,298 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/truck/man_19_304/lod_2_man_1970.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.1674, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_2_bw1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.439, 0, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_2_bw2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.2181, 0, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_2_fw.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.7027, -1.0218, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_2_fw.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.7027, 1.0218, 0.3941, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 950, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/truck/man_19_304/lod_1_man_1970.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.1674, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_1_bw1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.439, 0, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_1_bw2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.2181, 0, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_1_fw.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.7027, -1.0218, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_1_fw.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.7027, 1.0218, 0.3941, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 250, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/man_19_304/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_0_bw1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.439, 0, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_0_bw2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.2181, 0, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_0_fw.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.7027, -1.0218, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_0_fw.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1.7027, 1.0218, 0.3941, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/man_19_304/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + -- lights + { + id = "vehicle/asset/lod_0_light_square_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.3,0.65),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 3.0, 0.71, 0.56)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_square_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.3,0.65),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 3.0, -0.71, 0.56)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.3,0.4),transf.degToRad( 180.0, 0.0, 0.0), vec3.new( -3.276, -0.845, 0.77)), + type = "MESH", + }, + { + id = "vehicle/asset/lod_0_light_round_red.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,0.3,0.4),transf.degToRad( 180.0, 0.0, 0.0), vec3.new( -3.276, 0.845, 0.77)), + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("MAN 19.304"), + description = _("A three axle lorry with a 230 hp V8 motor. It had a foldaway cowling to ease maintenance.") + }, + roadVehicle = { + topSpeed = 80, + weight = 6, + power = 223, + tractiveEffort = 10, + configs = { + { + wheels = { + + "vehicle/truck/man_19_304/lod_2_fw.msh", + }, + axles = { + "vehicle/truck/man_19_304/lod_2_bw2.msh", + "vehicle/truck/man_19_304/lod_2_bw1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + }, + { + wheels = { + + "vehicle/truck/man_19_304/lod_1_fw.msh", + }, + axles = { + "vehicle/truck/man_19_304/lod_1_bw2.msh", + "vehicle/truck/man_19_304/lod_1_bw1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + }, + { + wheels = { + + "vehicle/truck/man_19_304/lod_0_fw.msh", + }, + axles = { + "vehicle/truck/man_19_304/lod_0_bw2.msh", + "vehicle/truck/man_19_304/lod_0_bw1.msh" + }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + } + }, + soundSet = "truck_modern" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "LOGS", capacity = 64 }, + { type = "LIVESTOCK", capacity = 64 }, + { type = "COAL", capacity = 64 }, + { type = "IRON_ORE", capacity = 64 }, + { type = "STONE", capacity = 64 }, + { type = "GRAIN", capacity = 64 }, + { type = "CRUDE", capacity = 64 }, + { type = "STEEL", capacity = 64 }, + { type = "PLANKS", capacity = 64 }, + { type = "PLASTIC", capacity = 64 }, + { type = "SLAG", capacity = 64 }, + { type = "OIL", capacity = 64 }, + { type = "CONSTRUCTION_MATERIALS", capacity = 64 }, + { type = "MACHINES", capacity = 64 }, + { type = "FUEL", capacity = 64 }, + { type = "TOOLS", capacity = 64 }, + { type = "FOOD", capacity = 64 }, + { type = "GOODS", capacity = 64 }, + }, + loadSpeed = 4, + seats = { + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.3, 0.42, 0.6)), crew = true}, + }, + }, + availability = { + yearFrom = 1995, + yearTo = 2003 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + } + }, + +} +end diff --git a/res/models/model/vehicle/truck/opel_blitz_1930.mdl b/res/models/model/vehicle/truck/opel_blitz_1930.mdl new file mode 100755 index 0000000..044ede8 --- /dev/null +++ b/res/models/model/vehicle/truck/opel_blitz_1930.mdl @@ -0,0 +1,255 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 3.189001083374, 1.1996840238571, 3.0848240852356, + }, + bbMin = { + -3.0658431053162, -1.1996840238571, -0.47877499461174, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/truck/opel_blitz/lod_2_opelblitz.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4843, 0, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_2_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2848, 0.8081, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_2_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.2848, -0.8081, 0.4757, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 180, + visibleTo = 860, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/opel_blitz/lod_1_opelblitz.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4843, 0, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2848, 0.8081, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_1_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.2848, -0.8081, 0.4757, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 80, + visibleTo = 180, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/truck/opel_blitz/lod_0_opelblitz.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4843, 0, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_0_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.2848, 0.8081, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_0_w2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 2.2848, -0.8081, 0.4757, 1, + }, + type = "MESH", + + }, { + id = "vehicle/truck/opel_blitz/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 2.9, 0.68, 1.06)), + type = "MESH", + },{ + id = "vehicle/asset/lod_0_light_round_white.msh", + --manual lights + transf = transf.scaleRotZYXTransl(vec3.new(1.0,1.0,1.0),transf.degToRad( 0.0, 0.0, 0.0), vec3.new( 2.9, -0.68, 1.06)), + type = "MESH", + }, + { + id = "vehicle/driver_static/lod_0_driver_static.msh", + transf = { + 1.0, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0, 0, -2.9, -0.22, 0.15, 1, + }, + type = "MESH", + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0,0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 80, + + }, + }, + metadata = { + description = { + name = _("Opel Blitz"), + description = _("A very popular lorry from Opel, built in diverse variants.") + }, + roadVehicle = { + topSpeed = 60, + weight = 2.5, + power = 73.5, + tractiveEffort = 7, + configs = { + { + }, + { + axles = { "vehicle/truck/opel_blitz/lod_1_w1.msh" }, + wheels = { "vehicle/truck/opel_blitz/lod_1_w2.msh" }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + }, + { + axles = { "vehicle/truck/opel_blitz/lod_0_w1.msh" }, + wheels = { "vehicle/truck/opel_blitz/lod_0_w2.msh" }, + fakeBogies = { { group = 0, position = 0.0, offset = 0.0 } } + } + }, + soundSet = "truck_old" + }, + transportVehicle = { + carrier = "ROAD", + capacities = { + { type = "LOGS", capacity = 44 }, + { type = "LIVESTOCK", capacity = 44 }, + { type = "COAL", capacity = 44 }, + { type = "IRON_ORE", capacity = 44 }, + { type = "STONE", capacity = 44 }, + { type = "GRAIN", capacity = 44 }, + { type = "CRUDE", capacity = 44 }, + { type = "STEEL", capacity = 44 }, + { type = "PLANKS", capacity = 44 }, + { type = "PLASTIC", capacity = 44 }, + { type = "SLAG", capacity = 44 }, + { type = "OIL", capacity = 44 }, + { type = "CONSTRUCTION_MATERIALS", capacity = 44 }, + { type = "MACHINES", capacity = 44 }, + { type = "FUEL", capacity = 44 }, + { type = "TOOLS", capacity = 44 }, + { type = "FOOD", capacity = 44 }, + { type = "GOODS", capacity = 44 }, + }, + loadSpeed = 3 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/3axes_person.mdl b/res/models/model/vehicle/waggon/3axes_person.mdl new file mode 100755 index 0000000..78352cb --- /dev/null +++ b/res/models/model/vehicle/waggon/3axes_person.mdl @@ -0,0 +1,473 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 5.826176071167, 1.4250220060349, 3.7648839950562, + }, + bbMin = { + -5.826176071167, -1.4250220060349, -0.55456000566483, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/3axes_person/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4398, 0.3328, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_2_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4.4398, -0.3328, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.9806, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9806, 0, 0.5068, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + }, + close_all_doors = { + }, + open_doors_left = { + }, + close_doors_left = { + }, + open_doors_right = { + }, + close_doors_right = { + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 450, + visibleTo = 1250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4398, 0.3328, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4.4398, -0.3328, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2806, -0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_d4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2806, 0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_d3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2806, 0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_d4.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2806, -0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.9806, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/3axes_person_lod_1_w3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9806, 0, 0.5068, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend3", forward = true }, + [5] = { name = "opend4", forward = true }, + [6] = { name = "opend3", forward = true }, + [7] = { name = "opend4", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend3", forward = false }, + [5] = { name = "opend4", forward = false }, + [6] = { name = "opend3", forward = false }, + [7] = { name = "opend4", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + [5] = { name = "opend4", forward = true }, + [6] = { name = "opend3", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + [5] = { name = "opend4", forward = false }, + [6] = { name = "opend3", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend3", forward = true }, + [7] = { name = "opend4", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend3", forward = false }, + [7] = { name = "opend4", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 80, + visibleTo = 450, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/3axes_person/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.4398, 0.3328, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4.4398, -0.3328, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2806, -0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_d3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.2806, 0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_d3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2806, 0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_d3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -5.2806, -0.9389, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.9806, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9806, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/3axes_person/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend3", forward = true }, + [5] = { name = "opend4", forward = true }, + [6] = { name = "opend3", forward = true }, + [7] = { name = "opend4", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend3", forward = false }, + [5] = { name = "opend4", forward = false }, + [6] = { name = "opend3", forward = false }, + [7] = { name = "opend4", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + [5] = { name = "opend4", forward = true }, + [6] = { name = "opend3", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + [5] = { name = "opend4", forward = false }, + [6] = { name = "opend3", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + [4] = { name = "opend3", forward = true }, + [7] = { name = "opend4", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + [4] = { name = "opend3", forward = false }, + [7] = { name = "opend4", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 80, + + }, + }, + metadata = { + description = { + name = _("Three-axle car"), + description = _("Three-axle coach with open platforms on both sides, used in Germany.") + }, + railVehicle = { + topSpeed = 100, + weight = 15, + configs = { + { + axles = { "vehicle/waggon/3axes_person/lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/3axes_person/3axes_person_lod_1_w3.msh" } + }, + { + axles = { "vehicle/waggon/3axes_person/lod_0_w1.msh" } + } + }, + soundSet = "waggon_old" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 54 } + }, + carrier = "RAIL", + loadSpeed = 2, + seats = { + + + --passangers + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-4.15, 0.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-4.15, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(-4.15, -1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(-4.15, -0.6, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-3.15, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-3.15, -0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-160.0, 0.0, 0.0), vec3.new(-3.15, 1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-3.15, -.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-2.65, 0.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-2.65, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(-2.65, -1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(-2.65, -0.6, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-1.7, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-1.7, -0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-160.0, 0.0, 0.0), vec3.new(-1.75, 1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-1.7, -.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-1.2, 0.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(-1.2, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(-1.2, -1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(-1.2, -0.6, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-0.3, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-0.3, -0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-160.0, 0.0, 0.0), vec3.new(-0.3, 1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(-0.3, -.8, 1.15))}, + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(3.15, 0.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(3.15, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(3.15, -1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(3.155, -0.6, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(4.15, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(4.15, -0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-160.0, 0.0, 0.0), vec3.new(4.15, 1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(4.15, -.8, 1.15))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(1.7, 0.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(1.7, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(1.7, -1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(1.7, -0.6, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(2.65, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(2.65, -0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-160.0, 0.0, 0.0), vec3.new(2.65, 1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(2.65, -.8, 1.15))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(0.3, 0.8, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-10.0, 0.0, 0.0), vec3.new(0.3, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(0.32, -1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(10.0, 0.0, 0.0), vec3.new(0.3, -0.6, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(1.2, 0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(1.2, -0.5, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-160.0, 0.0, 0.0), vec3.new(1.2, 1, 1.15))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(170.0, 0.0, 0.0), vec3.new(1.2, -.8, 1.15))}, + + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/bc4.mdl b/res/models/model/vehicle/waggon/bc4.mdl new file mode 100755 index 0000000..fa2b147 --- /dev/null +++ b/res/models/model/vehicle/waggon/bc4.mdl @@ -0,0 +1,356 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 10.208726882935, 1.5492769479752, 4.0738768577576, + }, + bbMin = { + -10.208726882935, -1.5492769479752, -0.017165005207062, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/bc4/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.6043, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/bc4_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.6043, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/bc4/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.1852, 0.9513, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_2_d1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-9.1852, 0.9513, 0))), + + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_2_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9.1852, -0.9513, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_2_d1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(9.1852, -0.9513, 0))), + + type = "MESH", + + }, + }, + events = { + open_all_doors = { + }, + close_all_doors = { + }, + open_doors_left = { + }, + close_doors_left = { + }, + open_doors_right = { + }, + close_doors_right = { + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0 + }, + }, + static = false, + visibleFrom = 500, + visibleTo = 1700, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/bc4/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.6043, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/bc4_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.6043, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/bc4/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.1852, 0.9513, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_0_d1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(0,0,0), vec3.new(-9.1852, 0.9513, 0))), + + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_0_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9.1852, -0.9513, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_0_d1.msh", + transf = transf.flipY(transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(9.1852, -0.9513, 0))), + + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/bc4/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [4] = { name = "opend1", forward = true }, + [5] = { name = "opend1", forward = true }, + [6] = { name = "opend1", forward = true }, + [7] = { name = "opend1", forward = true }, + }, + close_all_doors = { + [4] = { name = "opend1", forward = false }, + [5] = { name = "opend1", forward = false }, + [6] = { name = "opend1", forward = false }, + [7] = { name = "opend1", forward = false }, + }, + open_doors_left = { + [4] = { name = "opend1", forward = true }, + [7] = { name = "opend1", forward = true }, + }, + close_doors_left = { + [4] = { name = "opend1", forward = false }, + [7] = { name = "opend1", forward = false }, + }, + open_doors_right = { + [5] = { name = "opend1", forward = true }, + [6] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [5] = { name = "opend1", forward = false }, + [6] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0 + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 500, + + }, + }, + metadata = { + description = { + name = _("BC4"), + description = _("Four axle two bogie heavy coach for fast passenger service.") + }, + railVehicle = { + topSpeed = 120, + weight = 24, + configs = { + { + axles = { "vehicle/waggon/bc4/lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/bc4/lod_0_w1.msh" } + } + }, + soundSet = "waggon_modern" + }, + transportVehicle = { + capacities = { + { + type = "PASSENGERS", + capacity = 78, + } + }, + carrier = "RAIL", + loadSpeed = 2, + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-8.0, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-8.0, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-8.0, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.85, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.85, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.85, -0.9, 1.2)) }, + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.0, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.0, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-6.0, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.85, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.85, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.85, -0.9, 1.2)) }, + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-4.05, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.9, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.9, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.9, -0.9, 1.2)) }, + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.15, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.15, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.15, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.0, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.0, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.0, -0.9, 1.2)) }, + + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.85, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.85, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.85, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(8.0, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(8.0, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(8.0, -0.9, 1.2)) }, + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.85, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.85, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.85, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.0, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.0, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(6.0, -0.9, 1.2)) }, + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.9, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.9, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.9, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.05, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.05, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(4.05, -0.9, 1.2)) }, + + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0, 0.9, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0, 0.3, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0, -1.0, 1.2)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.15, 1.0, 1.2)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.15, 0.4, 1.2)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.15, -0.9, 1.2)) }, + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/compartment_car.mdl b/res/models/model/vehicle/waggon/compartment_car.mdl new file mode 100755 index 0000000..2908d2b --- /dev/null +++ b/res/models/model/vehicle/waggon/compartment_car.mdl @@ -0,0 +1,779 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 6.1922078132629, 1.5036840438843, 4.171010017395, + }, + bbMin = { + -6.1944198608398, -1.5036840438843, -0.5939080119133, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/compartment_car/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_a_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.6192, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_a_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9966, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_b_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.0771, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_b_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4546, - 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_c_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4611, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_c_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8385, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_d_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.1143, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_d_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.7369, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_e_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.4177, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_e_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.0403, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_f_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7411, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_f_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.3637, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_g_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3901, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_d_g_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0126, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7123, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.0505, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.6329, 0, 0.5504, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend", forward = true }, + [3] = { name = "opend", forward = true }, + [4] = { name = "opend", forward = true }, + [5] = { name = "opend", forward = true }, + [6] = { name = "opend", forward = true }, + [7] = { name = "opend", forward = true }, + [8] = { name = "opend", forward = true }, + [9] = { name = "opend", forward = true }, + [10] = { name = "opend", forward = true }, + [11] = { name = "opend", forward = true }, + [12] = { name = "opend", forward = true }, + [13] = { name = "opend", forward = true }, + [14] = { name = "opend", forward = true }, + [15] = { name = "opend", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend", forward = false }, + [3] = { name = "opend", forward = false }, + [4] = { name = "opend", forward = false }, + [5] = { name = "opend", forward = false }, + [6] = { name = "opend", forward = false }, + [7] = { name = "opend", forward = false }, + [8] = { name = "opend", forward = false }, + [9] = { name = "opend", forward = false }, + [10] = { name = "opend", forward = false }, + [11] = { name = "opend", forward = false }, + [12] = { name = "opend", forward = false }, + [13] = { name = "opend", forward = false }, + [14] = { name = "opend", forward = false }, + [15] = { name = "opend", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend", forward = true }, + [4] = { name = "opend", forward = true }, + [6] = { name = "opend", forward = true }, + [8] = { name = "opend", forward = true }, + [10] = { name = "opend", forward = true }, + [12] = { name = "opend", forward = true }, + [14] = { name = "opend", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend", forward = false }, + [4] = { name = "opend", forward = false }, + [6] = { name = "opend", forward = false }, + [8] = { name = "opend", forward = false }, + [10] = { name = "opend", forward = false }, + [12] = { name = "opend", forward = false }, + [14] = { name = "opend", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend", forward = true }, + [5] = { name = "opend", forward = true }, + [7] = { name = "opend", forward = true }, + [9] = { name = "opend", forward = true }, + [11] = { name = "opend", forward = true }, + [13] = { name = "opend", forward = true }, + [15] = { name = "opend", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend", forward = false }, + [5] = { name = "opend", forward = false }, + [7] = { name = "opend", forward = false }, + [9] = { name = "opend", forward = false }, + [11] = { name = "opend", forward = false }, + [13] = { name = "opend", forward = false }, + [15] = { name = "opend", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 200, + visibleTo = 1350, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/compartment_car/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_a_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.6192, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_a_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9966, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_b_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.0771, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_b_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4546, - 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_c_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4611, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_c_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8385, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_d_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.1143, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_d_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.7369, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_e_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.4177, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_e_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.0403, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_f_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7411, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_f_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.3637, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_g_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3901, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_d_g_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0126, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7123, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.0505, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.6329, 0, 0.5504, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend", forward = true }, + [3] = { name = "opend", forward = true }, + [4] = { name = "opend", forward = true }, + [5] = { name = "opend", forward = true }, + [6] = { name = "opend", forward = true }, + [7] = { name = "opend", forward = true }, + [8] = { name = "opend", forward = true }, + [9] = { name = "opend", forward = true }, + [10] = { name = "opend", forward = true }, + [11] = { name = "opend", forward = true }, + [12] = { name = "opend", forward = true }, + [13] = { name = "opend", forward = true }, + [14] = { name = "opend", forward = true }, + [15] = { name = "opend", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend", forward = false }, + [3] = { name = "opend", forward = false }, + [4] = { name = "opend", forward = false }, + [5] = { name = "opend", forward = false }, + [6] = { name = "opend", forward = false }, + [7] = { name = "opend", forward = false }, + [8] = { name = "opend", forward = false }, + [9] = { name = "opend", forward = false }, + [10] = { name = "opend", forward = false }, + [11] = { name = "opend", forward = false }, + [12] = { name = "opend", forward = false }, + [13] = { name = "opend", forward = false }, + [14] = { name = "opend", forward = false }, + [15] = { name = "opend", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend", forward = true }, + [4] = { name = "opend", forward = true }, + [6] = { name = "opend", forward = true }, + [8] = { name = "opend", forward = true }, + [10] = { name = "opend", forward = true }, + [12] = { name = "opend", forward = true }, + [14] = { name = "opend", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend", forward = false }, + [4] = { name = "opend", forward = false }, + [6] = { name = "opend", forward = false }, + [8] = { name = "opend", forward = false }, + [10] = { name = "opend", forward = false }, + [12] = { name = "opend", forward = false }, + [14] = { name = "opend", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend", forward = true }, + [5] = { name = "opend", forward = true }, + [7] = { name = "opend", forward = true }, + [9] = { name = "opend", forward = true }, + [11] = { name = "opend", forward = true }, + [13] = { name = "opend", forward = true }, + [15] = { name = "opend", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend", forward = false }, + [5] = { name = "opend", forward = false }, + [7] = { name = "opend", forward = false }, + [9] = { name = "opend", forward = false }, + [11] = { name = "opend", forward = false }, + [13] = { name = "opend", forward = false }, + [15] = { name = "opend", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 200, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/compartment_car/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_a_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.6192, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_a_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.9966, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_b_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.0771, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_b_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.4546, - 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_c_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.4611, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_c_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -0.8385, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_d_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.1143, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_d_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.7369, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_e_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.4177, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_e_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.0403, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_f_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.7411, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_f_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.3637, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_g_l.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3901, 1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_d_g_r.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.0126, -1.2791, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.7123, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0.0505, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.6329, 0, 0.5504, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/compartment_car/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend", forward = true }, + [3] = { name = "opend", forward = true }, + [4] = { name = "opend", forward = true }, + [5] = { name = "opend", forward = true }, + [6] = { name = "opend", forward = true }, + [7] = { name = "opend", forward = true }, + [8] = { name = "opend", forward = true }, + [9] = { name = "opend", forward = true }, + [10] = { name = "opend", forward = true }, + [11] = { name = "opend", forward = true }, + [12] = { name = "opend", forward = true }, + [13] = { name = "opend", forward = true }, + [14] = { name = "opend", forward = true }, + [15] = { name = "opend", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend", forward = false }, + [3] = { name = "opend", forward = false }, + [4] = { name = "opend", forward = false }, + [5] = { name = "opend", forward = false }, + [6] = { name = "opend", forward = false }, + [7] = { name = "opend", forward = false }, + [8] = { name = "opend", forward = false }, + [9] = { name = "opend", forward = false }, + [10] = { name = "opend", forward = false }, + [11] = { name = "opend", forward = false }, + [12] = { name = "opend", forward = false }, + [13] = { name = "opend", forward = false }, + [14] = { name = "opend", forward = false }, + [15] = { name = "opend", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend", forward = true }, + [4] = { name = "opend", forward = true }, + [6] = { name = "opend", forward = true }, + [8] = { name = "opend", forward = true }, + [10] = { name = "opend", forward = true }, + [12] = { name = "opend", forward = true }, + [14] = { name = "opend", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend", forward = false }, + [4] = { name = "opend", forward = false }, + [6] = { name = "opend", forward = false }, + [8] = { name = "opend", forward = false }, + [10] = { name = "opend", forward = false }, + [12] = { name = "opend", forward = false }, + [14] = { name = "opend", forward = false }, + }, + open_doors_right = { + [3] = { name = "opend", forward = true }, + [5] = { name = "opend", forward = true }, + [7] = { name = "opend", forward = true }, + [9] = { name = "opend", forward = true }, + [11] = { name = "opend", forward = true }, + [13] = { name = "opend", forward = true }, + [15] = { name = "opend", forward = true }, + }, + close_doors_right = { + [3] = { name = "opend", forward = false }, + [5] = { name = "opend", forward = false }, + [7] = { name = "opend", forward = false }, + [9] = { name = "opend", forward = false }, + [11] = { name = "opend", forward = false }, + [13] = { name = "opend", forward = false }, + [15] = { name = "opend", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Compartment car"), + description = _("This compartment coach had two doors for each compartment, one on each side of the car. Easy for the passengers in and out, but impossible for a conductor to check the tickets while driving.") + }, + railVehicle = { + topSpeed = 60, + weight = 10, + configs = { + { + axles = { "vehicle/waggon/compartment_car/lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/compartment_car/lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/compartment_car/lod_0_w1.msh" } + } + }, + soundSet = "waggon_old" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 42 } + }, + carrier = "RAIL", + loadSpeed = 4, + seats = { + + + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, -0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-3.7, 0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-3.7, 1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.1, -0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.1, -0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.1, 0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.1, 0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-2.1, 1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.3, 0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.3, 0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.3, -0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.3, -0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-3.3, -1, 1.2))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.55, -0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.55, -0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.55, 0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.55, 0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.55, 1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.8, -1, 1.2))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.95, -0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.95, -0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.95, 0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.95, 0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(0.95, 1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.2, 0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.2, 0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.2, -0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.2, -0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-0.2, -1, 1.2))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.6, -0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.6, -0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.6, 0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.6, 0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(3.6, 1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.45, 0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.45, 0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.45, -0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.45, -0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(2.45, -1, 1.2))}, + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.1, 0.8, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.1, 0.3, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.1, -0.1, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.1, -0.6, 1.2))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(4.1, -1, 1.2))}, + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 35 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/d1_spanischb.mdl b/res/models/model/vehicle/waggon/d1_spanischb.mdl new file mode 100755 index 0000000..b24b66e --- /dev/null +++ b/res/models/model/vehicle/waggon/d1_spanischb.mdl @@ -0,0 +1,322 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/d1_spanischb/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3618, -0.2901, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_2_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3618, 0.2901, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5381, 0, 0.4328, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.536, 0, 0.4328, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + + }, + close_all_doors = { + + }, + open_doors_left = { + + }, + close_doors_left = { + + }, + open_doors_right = { + + }, + close_doors_right = { + + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 1000, + + },{ + animations = { + + }, + children = { + { + id = "vehicle/waggon/d1_spanischb/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3618, -0.2901, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_1_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3618, 0.2901, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5381, 0, 0.4328, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.536, 0, 0.4328, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 50, + visibleTo = 400, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/d1_spanischb/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3618, -0.2901, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3618, 0.2901, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5381, 0, 0.4328, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.536, 0, 0.4328, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/d1_spanischb/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 50, + + }, + }, + metadata = { + description = { + name = _("D 1/3 car"), + description = _("This legendary railway was known as the Spanisch-Brötli-Bahn, named after a delicacy of Baden, Switzerland.") + }, + railVehicle = { + topSpeed = 40, + weight = 5, + configs = { + { + axles = { "vehicle/waggon/d1_spanischb/lod_2_w1.msh" } + },{ + axles = { "vehicle/waggon/d1_spanischb/lod_1_w1.msh" } + },{ + axles = { "vehicle/waggon/d1_spanischb/lod_0_w1.msh" } + } + }, + soundSet = "waggon_old" + }, + transportVehicle = { + capacities = { + { + type = "PASSENGERS", + capacity = 22, + } + }, + carrier = "RAIL", + loadSpeed = 2, + seats = { + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.1, 0.6, 1.1)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.1, -0.8, 1.1)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.0, 0.8, 1.1)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.0, -0.6, 1.1)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.55, 0.6, 1.1)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-0.55, -0.8, 1.1)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.55, 0.8, 1.1)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(0.55, -0.6, 1.1)) }, + + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.1, 0.8, 1.1)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.1, -0.6, 1.1)) }, + + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0, 0.6, 1.1)) }, + { group = 1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.0, -0.8, 1.1)) }, + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 25 + } + + }, + +} +end \ No newline at end of file diff --git a/res/models/model/vehicle/waggon/donnerbuechse.mdl b/res/models/model/vehicle/waggon/donnerbuechse.mdl new file mode 100755 index 0000000..d4c4472 --- /dev/null +++ b/res/models/model/vehicle/waggon/donnerbuechse.mdl @@ -0,0 +1,343 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 6.7440481185913, 1.4809349775314, 3.9359591007233, + }, + bbMin = { + -6.7440481185913, -1.4809349775314, -0.49137100577354, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/donnerbuechse/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_2_door1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.3282, -0.4003, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_2_door2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.3873, 0.4003, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.0776, 0, 0.4702, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.0776, 0, 0.4702, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + }, + close_all_doors = { + }, + open_doors_left = { + }, + close_doors_left = { + }, + open_doors_right = { + }, + close_doors_right = { + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 1350, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/donnerbuechse/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_door1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.3282, -0.4003, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_door2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.3873, 0.4003, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_door3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.1203, -0.9306, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_door4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.1465, 0.9306, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_door3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 6.2653, -0.9306, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_door4.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 6.2653, 0.9306, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.0776, 0, 0.4702, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.0776, 0, 0.4702, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/donnerbuechse/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + [4] = { name = "opend3", forward = true }, + [5] = { name = "opend4", forward = true }, + [6] = { name = "opend3inv", forward = true }, + [7] = { name = "opend4inv", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + [4] = { name = "opend3", forward = false }, + [5] = { name = "opend4", forward = false }, + [6] = { name = "opend3inv", forward = false }, + [7] = { name = "opend4inv", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + [5] = { name = "opend4", forward = true }, + [7] = { name = "opend4inv", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + [5] = { name = "opend4", forward = false }, + [7] = { name = "opend4inv", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + [4] = { name = "opend3", forward = true }, + [6] = { name = "opend3inv", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + [4] = { name = "opend3", forward = false }, + [6] = { name = "opend3inv", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 400, + + }, + }, + metadata = { + description = { + name = _("Donnerbüchse"), + description = _("Four-wheeled, standard, open coach made entirely of iron and steel. The lack of damping caused loud rumbling, hence the name \"Thunderbox\".") + }, + railVehicle = { + topSpeed = 100, + weight = 20, + configs = { + { + axles = { + "vehicle/waggon/donnerbuechse/lod_2_w1.msh", + "vehicle/waggon/donnerbuechse/lod_2_w1.msh" + } + }, + { + axles = { + "vehicle/waggon/donnerbuechse/lod_0_w1.msh", + "vehicle/waggon/donnerbuechse/lod_0_w1.msh" + } + } + }, + soundSet = "waggon_old" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 66 } + }, + carrier = "RAIL", + loadSpeed = 2, + seats = { + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4, -0.45, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.7, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, -0.45, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.5, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.5, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.5, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.5, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.5, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.5, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.5, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.5, -0.45, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.2, 0.45, 1))}, + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.2, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.2, -0.45, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.5, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.5, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.5, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.5, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.5, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.5, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.5, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(2.5, -0.45, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.7, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.7, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.7, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.7, -0.45, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4, -1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4, -0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4, 0.45, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5, 1.1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5, 0.65, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5, -0.45, 1))}, + + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/ew_ii.mdl b/res/models/model/vehicle/waggon/ew_ii.mdl new file mode 100755 index 0000000..635db7b --- /dev/null +++ b/res/models/model/vehicle/waggon/ew_ii.mdl @@ -0,0 +1,312 @@ +local vec3 = require "vec3" +local transf = require "transf" + +function data() +return { + boundingInfo = { + bbMax = { + 11.946655273438, 1.4136459827423, 3.7780799865723, + }, + bbMin = { + -11.946655273438, -1.4136459827423, -0.42713099718094, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/ew_ii_lod_2_doors.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.4496, -1.1212, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii_lod_2_doors2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.4496, 1.1212, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii_lod_2_doors.grp", + transf = transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(9.4496, 1.1212, 0)), + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii_lod_2_doors2.grp", + transf = transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(9.4496, -1.1212, 0)), + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_ii_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/ew_ii_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + }, + close_all_doors = { + }, + open_doors_right = { + }, + close_doors_right = { + }, + open_doors_left = { + }, + close_doors_left = { + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 1830, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/ew_ii_lod_0_doors.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.4496, -1.1212, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii_lod_0_doors2.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.4496, 1.1212, 0, 1, + }, + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii_lod_0_doors.grp", + transf = transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(9.4496, 1.1212, 0)), + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii_lod_0_doors2.grp", + transf = transf.rotZYXTransl(transf.degToRad(180,0,0), vec3.new(9.4496, -1.1212, 0)), + type = "GROUP", + + }, + { + id = "vehicle/waggon/ew_ii/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_ii/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/ew_ii/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_ii_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/ew_ii_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + [1] = { name = "open_doors", forward = true }, + [2] = { name = "open_doors", forward = true }, + [3] = { name = "open_doors", forward = true }, + [4] = { name = "open_doors", forward = true }, + }, + close_all_doors = { + [1] = { name = "open_doors", forward = false }, + [2] = { name = "open_doors", forward = false }, + [3] = { name = "open_doors", forward = false }, + [4] = { name = "open_doors", forward = false }, + }, + open_doors_right = { + [1] = { name = "open_doors", forward = true }, + [4] = { name = "open_doors", forward = true }, + }, + close_doors_right = { + [1] = { name = "open_doors", forward = false }, + [4] = { name = "open_doors", forward = false }, + }, + open_doors_left = { + [2] = { name = "open_doors", forward = true }, + [3] = { name = "open_doors", forward = true }, + }, + close_doors_left = { + [2] = { name = "open_doors", forward = false }, + [3] = { name = "open_doors", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 400, + + }, + }, + metadata = { + description = { + name = _("Einheitswagen II"), + description = _("This four axle, twin bogie \"Standard-Coach II\" for passenger service was built in big series.") + }, + railVehicle = { + topSpeed = 140, + weight = 30, + configs = { + { + axles = { "vehicle/waggon/ew_ii/lod_2_w1.msh" } + },{ + axles = { "vehicle/waggon/ew_ii/lod_0_w1.msh" } + } + }, + soundSet = "waggon_modern" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 82 } + }, + carrier = "RAIL", + loadSpeed = 2, + seats = { + --passangers + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.7, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.7, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.7, -0.9, 1))}, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.8, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.8, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.8, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.7, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.7, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.7, -0.9, 1))}, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.8, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.8, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.8, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, -0.9, 1))}, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.7, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.7, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.7, -0.9, 1))}, + + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.8, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.8, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.8, -0.9, 1))}, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.7, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.7, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.7, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.8, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.8, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.8, -0.9, 1))}, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.8, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.8, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.8, -0.9, 1))}, + + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, -1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, -0.4, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, 0.9, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.8, 1, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.8, -0.2, 1))}, + { group =13, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.8, -0.9, 1))}, + + + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/ew_iv.mdl b/res/models/model/vehicle/waggon/ew_iv.mdl new file mode 100755 index 0000000..d2b86c3 --- /dev/null +++ b/res/models/model/vehicle/waggon/ew_iv.mdl @@ -0,0 +1,326 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 13.285885810852, 1.4119000434875, 4.0756788253784, + }, + bbMin = { + -13.285887718201, -1.411003947258, -0.48102399706841, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/ew_iv/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_2_d2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_2_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_2_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv_lod_2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.2122, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/ew_iv_lod_2_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9.2122, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + open_all_doors = { + }, + close_all_doors = { + }, + open_doors_left = { + }, + close_doors_left = { + }, + open_doors_right = { + }, + close_doors_right = { + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0 + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 2010, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/ew_iv/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_0_d2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_0_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv/lod_0_d2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 10.4973, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/ew_iv_lod_0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -9.2122, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/ew_iv_lod_0_bogie.grp", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 9.2122, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/ew_iv/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/ew_iv/lod_0_logo_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + [4] = { name = "opend1", forward = true }, + [5] = { name = "opend2", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + [4] = { name = "opend1", forward = false }, + [5] = { name = "opend2", forward = false }, + }, + open_doors_left = { + [4] = { name = "opend1", forward = true }, + [3] = { name = "opend2", forward = true }, + }, + close_doors_left = { + [4] = { name = "opend1", forward = false }, + [3] = { name = "opend2", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [5] = { name = "opend2", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [5] = { name = "opend2", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0 + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 400, + + }, + }, + metadata = { + description = { + name = _("Einheitswagen IV"), + description = _("The four axle, twin bogie \"Standard-Coach IV\" was built on the experience with \"Standard-Coach II\" and had an improved interior, and, a first, air-conditioning.") + }, + railVehicle = { + topSpeed = 200, + weight = 42, + configs = { + { + axles = { "vehicle/waggon/ew_iv/lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/ew_iv/lod_0_w1.msh" } + } + }, + soundSet = "waggon_modern" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "PASSENGERS", capacity = 86 } + }, + loadSpeed = 2, + seats = { + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-10, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.8, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.8, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-8.8, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-7.8, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.7, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.7, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-6.7, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.8, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.8, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-5.8, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.7, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.7, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-4.7, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.8, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.8, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-3.8, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-2.7, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.8, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.7, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.7, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.7, -0.9, 1))}, + + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(6.8, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.8, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.8, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(7.8, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.7, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.7, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(4.7, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.8, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.8, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(5.8, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, 0.5, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(2.7, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.8, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.8, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(3.8, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, 0.25, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(0.7, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.8, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.8, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.8, -0.9, 1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(8.8, -1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(8.8, 0.9, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10, 1, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10, 0.4, 1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(10, -0.9, 1))}, + + + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/goods_1850_v2.mdl b/res/models/model/vehicle/waggon/goods_1850_v2.mdl new file mode 100755 index 0000000..e174cb1 --- /dev/null +++ b/res/models/model/vehicle/waggon/goods_1850_v2.mdl @@ -0,0 +1,192 @@ +function data() +return { + boundingInfo = { + bbMax = { + 3.7555150985718, 1.5256500244141, 3.6031980514526, + }, + bbMin = { + -3.7555150985718, -1.5256500244141, -0.53295797109604, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/goods_1850/goods_1850_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/goods_1850/goods_1850_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6429, 0, 0.4803, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/goods_1850/goods_1850_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6429, 0, 0.4803, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 1030, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/goods_1850/goods_1850_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/goods_1850/goods_1850_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6429, 0, 0.4803, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/goods_1850/goods_1850_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6429, 0, 0.4803, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/goods_1850/goods_1850_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/goods_1850/goods_1850_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6429, 0, 0.4803, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/goods_1850/goods_1850_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6429, 0, 0.4803, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Goods wagon"), + description = _("Common used boxcar.") + }, + railVehicle = { + topSpeed = 80, + weight = 5, + configs = { + { + axles = { "vehicle/waggon/goods_1850/goods_1850_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/goods_1850/goods_1850_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/goods_1850/goods_1850_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "LIVESTOCK", capacity = 16 }, + { type = "PLASTIC", capacity = 16 }, + { type = "MACHINES", capacity = 16 }, + { type = "TOOLS", capacity = 16 }, + { type = "FOOD", capacity = 16 }, + { type = "GOODS", capacity = 16 }, + }, + loadSpeed = 1 + }, + availability = { + yearFrom = 1850, + yearTo = 1859 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 50 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/hbi1_v2.mdl b/res/models/model/vehicle/waggon/hbi1_v2.mdl new file mode 100755 index 0000000..93c954d --- /dev/null +++ b/res/models/model/vehicle/waggon/hbi1_v2.mdl @@ -0,0 +1,185 @@ +function data() +return { + boundingInfo = { + bbMax = { + 7.9388990402222, 1.7026489973068, 4.6074352264404, + }, + bbMin = { + -8.4486074447632, -1.7026489973068, -0.0088170170783997, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/hbi1/lod_2_hbi.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/hbi1/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.3857002258301, 0, 0.51899999380112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/hbi1/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3857002258301, 0, 0.51899999380112, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 300, + visibleTo = 1610, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/hbi1/lod_1_hbi.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/hbi1/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.3857002258301, 0, 0.51899999380112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/hbi1/lod_1_w2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3857002258301, 0, 0.51899999380112, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 150, + visibleTo = 300, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/hbi1/lod_0_hbi.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/hbi1/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.3857002258301, 0, 0.51899999380112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/hbi1/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.3857002258301, 0, 0.51899999380112, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 150, + + }, + }, + metadata = { + description = { + name = _("Goods wagon Hbi"), + description = _("Twin-axle boxcar with sliding doors, specially for sensitive goods on palettes.") + }, + railVehicle = { + topSpeed = 160, -- 160.0 + weight = 18, + configs = { + { }, + { }, + { + axles = { "vehicle/waggon/hbi1/lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_modern" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "LIVESTOCK", capacity = 52 }, + { type = "PLASTIC", capacity = 52 }, + { type = "MACHINES", capacity = 52 }, + { type = "TOOLS", capacity = 52 }, + { type = "FOOD", capacity = 52 }, + { type = "GOODS", capacity = 52 }, + }, + loadSpeed = 3 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/kesselwagen_1860.mdl b/res/models/model/vehicle/waggon/kesselwagen_1860.mdl new file mode 100755 index 0000000..e550249 --- /dev/null +++ b/res/models/model/vehicle/waggon/kesselwagen_1860.mdl @@ -0,0 +1,189 @@ +function data() +return { + boundingInfo = { + bbMax = { + 3.3467490673065, 1.2839050292969, 4.0473217964172, + }, + bbMin = { + -3.3659648895264, -1.2839050292969, -0.58142900466919, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.498, 0, 0.5116, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.498, 0, 0.5116, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 1070, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.498, 0, 0.5116, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.498, 0, 0.5116, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 350, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.498, 0, 0.5116, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.498, 0, 0.5116, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + description = { + name = _("Tank wagon"), + description = _("Twin axle tank wagon.") + }, + railVehicle = { + topSpeed = 80, -- 120.0 + weight = 6, + configs = { + { + axles = { "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1860/kesselwagen_1860_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "CRUDE", capacity = 20 }, + { type = "OIL", capacity = 20 }, + { type = "FUEL", capacity = 20 }, + }, + loadSpeed = 1 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/kesselwagen_1910.mdl b/res/models/model/vehicle/waggon/kesselwagen_1910.mdl new file mode 100755 index 0000000..f8abf25 --- /dev/null +++ b/res/models/model/vehicle/waggon/kesselwagen_1910.mdl @@ -0,0 +1,189 @@ +function data() +return { + boundingInfo = { + bbMax = { + 3.7725789546967, 1.5062819719315, 4.7687492370605, + }, + bbMin = { + -4.5749650001526, -1.5062819719315, -0.58102601766586, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.9297, 0, 0.5112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.9429, 0, 0.5112, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 1280, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.9297, 0, 0.5112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.9429, 0, 0.5112, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 400, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.9297, 0, 0.5112, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.9429, 0, 0.5112, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + description = { + name = _("Tank wagon"), + description = _("Twin axle tank wagon.") + }, + railVehicle = { + topSpeed = 120, -- 120.0 + weight = 10, + configs = { + { + axles = { "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1910/kesselwagen_1910_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "CRUDE", capacity = 36 }, + { type = "OIL", capacity = 36 }, + { type = "FUEL", capacity = 36 }, + }, + loadSpeed = 2 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/kesselwagen_1950.mdl b/res/models/model/vehicle/waggon/kesselwagen_1950.mdl new file mode 100755 index 0000000..b7266f2 --- /dev/null +++ b/res/models/model/vehicle/waggon/kesselwagen_1950.mdl @@ -0,0 +1,263 @@ +function data() +return { + boundingInfo = { + bbMax = { + 7.414354801178, 1.6036590337753, 4.3081970214844, + }, + bbMin = { + -7.414354801178, -1.6036590337753, -0.54317998886108, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_b1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.8255, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_b1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.8255, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5.7633, 0, 0.4801, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5.7633, 0, 0.4801, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3.8878, 0, 0.4801, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -3.8878, 0, 0.4801, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, + }, + }, + static = false, + visibleFrom = 650, + visibleTo = 1490, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1950_lod2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.8255, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/kesselwagen_1950_lod2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.8255, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 400, + visibleTo = 650, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1950_lod1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.8255, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/kesselwagen_1950_lod1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.8255, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 400, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/kesselwagen_1950_lod0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.8255, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/kesselwagen_1950_lod0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.8255, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + description = { + name = _("Tank wagon"), + description = _("Double bogie, four axle tank wagon.") + }, + railVehicle = { + topSpeed = 160, + weight = 15, + configs = { + { + axles = { "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_3_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/kesselwagen_1950/kesselwagen_1950_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_modern" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "CRUDE", capacity = 60 }, + { type = "OIL", capacity = 60 }, + { type = "FUEL", capacity = 60 }, + }, + loadSpeed = 3 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 60 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/open_1850.mdl b/res/models/model/vehicle/waggon/open_1850.mdl new file mode 100755 index 0000000..90420e0 --- /dev/null +++ b/res/models/model/vehicle/waggon/open_1850.mdl @@ -0,0 +1,296 @@ +function data() +return { + boundingInfo = { + bbMax = { + 3.3591649532318, 1.3326870203018, 2.737401008606, + }, + bbMin = { + -3.3591649532318, -1.3326870203018, -0.53216099739075, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1850/open_1850_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5249, 0, 0.4915, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5249, 0, 0.4915, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 1010, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1850/open_1850_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5249, 0, 0.4915, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5249, 0, 0.4915, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1850/open_1850_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.5249, 0, 0.4915, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1850/open_1850_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.5249, 0, 0.4915, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Open wagon"), + description = _("Twin axle freight wagon.") + }, + railVehicle = { + topSpeed = 80, + weight = 5, + configs = { + { + axles = { "vehicle/waggon/open_1850/open_1850_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/open_1850/open_1850_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/open_1850/open_1850_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "COAL", capacity = 16, loadIndicator = { type = "LEVEL", params = { id = 2, maxHeight = 1.2 } } }, + { type = "IRON_ORE", capacity = 16, loadIndicator = { type = "LEVEL", params = { id = 3, maxHeight = 1.2 } } }, + { type = "STONE", capacity = 16, loadIndicator = { type = "LEVEL", params = { id = 4, maxHeight = 1.2 } } }, + { type = "GRAIN", capacity = 16, loadIndicator = { type = "LEVEL", params = { id = 5, maxHeight = 1.2 } } }, + { type = "SLAG", capacity = 16, loadIndicator = { type = "LEVEL", params = { id = 6, maxHeight = 1.2 } } }, + }, + loadSpeed = 1 + }, + availability = { + yearFrom = 1850, + yearTo = 1859 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/open_1910.mdl b/res/models/model/vehicle/waggon/open_1910.mdl new file mode 100755 index 0000000..457c6cd --- /dev/null +++ b/res/models/model/vehicle/waggon/open_1910.mdl @@ -0,0 +1,296 @@ +function data() +return { + boundingInfo = { + bbMax = { + 4.9892120361328, 1.493842959404, 2.4498810768127, + }, + bbMin = { + -4.9892120361328, -1.493842959404, -0.58087199926376, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1910/open_1910_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3848, 0, 0.511, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3848, 0, 0.511, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 1010, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1910/open_1910_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3848, 0, 0.511, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3848, 0, 0.511, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1910/open_1910_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3848, 0, 0.511, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1910/open_1910_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3848, 0, 0.511, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Open wagon"), + description = _("Twin axle freight wagon.") + }, + railVehicle = { + topSpeed = 120, + weight = 10, + configs = { + { + axles = { "vehicle/waggon/open_1910/open_1910_lod_2_w1.msh"} + }, + { + axles = { "vehicle/waggon/open_1910/open_1910_lod_1_w1.msh"} + }, + { + axles = { "vehicle/waggon/open_1910/open_1910_lod_0_w1.msh"} + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "COAL", capacity = 32, loadIndicator = { type = "LEVEL", params = { id = 2, maxHeight = 0.88 } } }, + { type = "IRON_ORE", capacity = 32, loadIndicator = { type = "LEVEL", params = { id = 3, maxHeight = 0.88 } } }, + { type = "STONE", capacity = 32, loadIndicator = { type = "LEVEL", params = { id = 4, maxHeight = 0.88 } } }, + { type = "GRAIN", capacity = 32, loadIndicator = { type = "LEVEL", params = { id = 5, maxHeight = 0.88 } } }, + { type = "SLAG", capacity = 32, loadIndicator = { type = "LEVEL", params = { id = 6, maxHeight = 0.88 } } }, + }, + loadSpeed = 2 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/open_1975.mdl b/res/models/model/vehicle/waggon/open_1975.mdl new file mode 100755 index 0000000..24a4557 --- /dev/null +++ b/res/models/model/vehicle/waggon/open_1975.mdl @@ -0,0 +1,295 @@ +function data() +return { + boundingInfo = { + bbMax = { + 7.1124649047852, 1.6697959899902, 3.2351810932159, + }, + bbMin = { + -7.1124649047852, -1.6697959899902, -0.50375598669052, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1975/open_1975_lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_2_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/open_1975_lod2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.566, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/open_1975_lod2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.566, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 350, + visibleTo = 1280, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1975/open_1975_lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_1_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/open_1975_lod1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.566, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/open_1975_lod1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.566, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 350, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/open_1975/open_1975_lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/open_1975/open_1975_lod_0_cargo_load.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/open_1975_lod0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4.566, 0, 0, 1, + }, + type = "GROUP", + + },{ + id = "vehicle/waggon/open_1975_lod0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -4.566, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 1, 2, 3, 4, 0, 0 + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + description = { + name = _("Open wagon"), + description = _("Four axle freight wagon, particularly for mass transport.") + }, + railVehicle = { + topSpeed = 160, + weight = 15, + configs = { + { + axles = { "vehicle/waggon/open_1975/open_1975_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/open_1975/open_1975_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/open_1975/open_1975_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_modern" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "COAL", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 2, maxHeight = 1.88 } } }, + { type = "IRON_ORE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 3, maxHeight = 1.88 } } }, + { type = "STONE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 4, maxHeight = 1.88 } } }, + { type = "GRAIN", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 5, maxHeight = 1.88 } } }, + { type = "SLAG", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 6, maxHeight = 1.88 } } }, + }, + loadSpeed = 3 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/rungenwagen_1850.mdl b/res/models/model/vehicle/waggon/rungenwagen_1850.mdl new file mode 100755 index 0000000..866e2d7 --- /dev/null +++ b/res/models/model/vehicle/waggon/rungenwagen_1850.mdl @@ -0,0 +1,731 @@ +function data() + +local sx1 = 5.6/7 +local sy1 = 2.63/4.13 +local sz1 = 2.2/12 +local tx1 = 0.00 +local tz1 = 1.2 +local dz1 = .35 + +local sx2 = 5.4/7.8 +local sy2 = 2.63/3.94 +local sz2 = 2.2/13 +local tx2 = 0.0 +local tz2 = 1.2 +local dz2 = .35 + +local sx3 = 5.4/7.05 +local sy3 = 2.63/4.0 +local sz3 = 2.2/8 +local tx3 = 0.0 +local tz3 = 1.2 +local dz3 = .35 + +return { + boundingInfo = { + bbMax = { + 3.4886469841003, 1.5378539562225, 3.2384350299835, + }, + bbMin = { + -3.4886469841003, -1.5378539562225, -0.070367991924286, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1850/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + + + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 3 *dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1850/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6389000415802, 0, 0.5149000287056, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1850/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6389000415802, 0, 0.5149000287056, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 240, + visibleTo = 950, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1850/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + + + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 3 *dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1850/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6389000415802, 0, 0.5149000287056, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1850/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6389000415802, 0, 0.5149000287056, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 240, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1850/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + + { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + + }, + + { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + + + + }, + { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 3 *dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + }, + { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, + + { + id = "vehicle/waggon/rungenwagen_1850/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.6389000415802, 0, 0.5149000287056, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1850/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.6389000415802, 0, 0.5149000287056, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + availability = { + yearFrom = 1850, + yearTo = 1859, + + }, + cost = { + price = -1, + + }, + description = { + name = _("Stake car"), + description = _("Twin axle stake car.") + }, + maintenance = { + lifespan = 40, + runningCosts = -1, + + }, + railVehicle = { + configs = { + { + axles = { + "vehicle/waggon/rungenwagen_1850/lod_2_w1.msh", + }, + fakeBogies = { + + }, + + }, { + axles = { + "vehicle/waggon/rungenwagen_1850/lod_1_w1.msh", + }, + fakeBogies = { + + }, + + }, { + axles = { + "vehicle/waggon/rungenwagen_1850/lod_0_w1.msh", + }, + fakeBogies = { + + }, + + }, + }, + engines = { + + }, + soundSet = { + horn = "", + name = "waggon_freight_old", + + }, + topSpeed = 80, + weight = 5, + + }, + transportVehicle = { + capacities = { + { type = "LOGS", capacity = 16, loadIndicators = { + { + params = { + levels = { + { + 2, 3, 4, 5, 6, + }, { + 3, 4, 5, 6, + }, { + 4, 5, 6, + }, { + 5, 6, + }, { + 6, + }, { + + }, + }, + + }, + type = "DISCRETE", + + }, + }, + type = "LOGS", + }, + { type = "STEEL", capacity = 16, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 7, 8, 9, 10, 11, } + } + }, + } + }, + { type = "PLANKS", capacity = 16, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 12, 13, 14, 15, 16, } + } + }, + } + }, + { type = "CONSTRUCTION_MATERIALS", capacity = 16, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 17, 18, 19, 20, 21, } + } + }, + } + }, + }, + carrier = "RAIL", + loadSpeed = 1 + + }, + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/rungenwagen_1890.mdl b/res/models/model/vehicle/waggon/rungenwagen_1890.mdl new file mode 100755 index 0000000..52af921 --- /dev/null +++ b/res/models/model/vehicle/waggon/rungenwagen_1890.mdl @@ -0,0 +1,1107 @@ +function data() + +local sx1 = .7 +local sy1 = 2.63/4.13 +local sz1 = .2 +local tx1 = 2.5 +local tz1 = 1.15 +local dz1 = .4 + +local sx2 = 5/7.85 +local sy2 = 2.63/3.94 +local sz2 = 0.2 +local tx2 = 2.5 +local tz2 = 1.15 +local dz2 = .4 + +local sx3 = 5/7.15 +local sy3 = 2.63/4.0 +local sz3 = 0.4 +local tx3 = 2.5 +local tz3 = 1.15 +local dz3 = .4 + +return { + boundingInfo = { + bbMax = { + 5.7000179290771, 1.5136979818344, 3.4331810474396, + }, + bbMin = { + -5.7000179290771, -1.5136979818344, -0.50028097629547, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1890/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1890/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9696, 0, 0.4402, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1890/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9696, 0, 0.4402, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + },{ + id = "vehicle/waggon/_freight/lod_2_freight_wood_level1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level4.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_wood_level5.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 2* dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 2* dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 3 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 3 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 2* dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, + 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 210, + visibleTo = 1170, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1890/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1890/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9696, 0, 0.4402, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1890/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9696, 0, 0.4402, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + + },{ + id = "vehicle/waggon/_freight/lod_1_freight_wood_level1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level4.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_wood_level5.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 2* dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 2* dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 3 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 3 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 2* dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, + 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 210, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1890/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1890/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.9696, 0, 0.4402, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1890/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9696, 0, 0.4402, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level4.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level5.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.5, 0, 0, 1, + }, + type = "MESH", + + + },{ + id = "vehicle/waggon/_freight/lod_0_freight_wood_level1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level4.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_wood_level5.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.5, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 2* dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 3 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 4 * dz1, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 2* dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 3 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 3 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 4 * dz2, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 2* dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 3 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 4 * dz3, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, + 0, 0, 0, + 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + + description = { + name = _("Stake car"), + description = _("Twin axle stake car.") + }, + railVehicle = { + topSpeed = 120, + weight = 10, + configs = { + { + axles = { "vehicle/waggon/rungenwagen_1890/lod_2_w1.msh"} + }, + { + axles = { "vehicle/waggon/rungenwagen_1890/lod_1_w1.msh"} + }, + { + axles = { "vehicle/waggon/rungenwagen_1890/lod_0_w1.msh"} + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "LOGS", capacity = 32, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 4, 9, 5, 10, 6, 11, 7, 12, 8, 13 } + } + }, + } + }, + { type = "STEEL", capacity = 32, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 } + } + }, + } + }, + { type = "PLANKS", capacity = 32, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 } + } + }, + } + }, + { type = "CONSTRUCTION_MATERIALS", capacity = 32, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 } + } + }, + } + }, + }, + loadSpeed = 2 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 60 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/rungenwagen_1950.mdl b/res/models/model/vehicle/waggon/rungenwagen_1950.mdl new file mode 100755 index 0000000..33d6fc5 --- /dev/null +++ b/res/models/model/vehicle/waggon/rungenwagen_1950.mdl @@ -0,0 +1,783 @@ +function data() + +local sx1 = 8/7 +local sy1 = 2.63/4.13 +local sz1 = .35 +local tx1 = 4.02 +local tz1 = 1.2 +local dz1 = .7 + +local sx2 = 8/7.8 +local sy2 = 2.63/3.94 +local sz2 = 0.35 +local tx2 = 4.02 +local tz2 = 1.2 +local dz2 = .7 + +local sx3 = 8/7.3 +local sy3 = 2.63/4.0 +local sz3 = 0.55 +local tx3 = 4.02 +local tz3 = 1.2 +local dz3 = .74 + + +return { + boundingInfo = { + bbMax = { + 8.7690124511719, 1.5262520313263, 3.6753621101379, + }, + bbMin = { + -9.1690120697021, -1.5262520313263, -0.56175297498703, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1950/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + -- wood needed for rungenwagen 1950 + { + id = "vehicle/waggon/_freight/lod_2_freight_bigwood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_bigwood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_bigwood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/waggon/_freight/lod_2_freight_bigwood_level1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_bigwood_level2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_2_freight_bigwood_level3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 2* dz1, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 2* dz2, 1, + }, + type = "MESH", + + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 2* dz3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1950_lod2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.1279, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/rungenwagen_1950_lod2_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.1279, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 220, + visibleTo = 1530, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1950/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + -- wood needed for rungenwagen 1950 + { + id = "vehicle/waggon/_freight/lod_1_freight_bigwood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_bigwood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_bigwood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/waggon/_freight/lod_1_freight_bigwood_level1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_bigwood_level2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_1_freight_bigwood_level3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 2* dz1, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 2* dz2, 1, + }, + type = "MESH", + + + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_1_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 2* dz3, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/rungenwagen_1950_lod1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.1279, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/rungenwagen_1950_lod1_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.1279, 0, 0, 1, + }, + type = "GROUP", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 100, + visibleTo = 220, + + }, { + animations = { + + }, + children = { + { + id = "vehicle/waggon/rungenwagen_1950/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + -- wood needed for rungenwagen 1950 + { + id = "vehicle/waggon/_freight/lod_0_freight_bigwood_level1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_bigwood_level2.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_bigwood_level3.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 0, 0, 1, + }, + type = "MESH", + + }, + { + id = "vehicle/waggon/_freight/lod_0_freight_bigwood_level1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_bigwood_level2.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/_freight/lod_0_freight_bigwood_level3.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -4, 0, 0, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, tx1, 0, tz1 + 2 * dz1, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_steel_large.msh", + transf = { + sx1, 0, 0, 0, 0, sy1, 0, 0, 0, 0, sz1, 0, -tx1, 0, tz1 + 2* dz1, 1, + }, + type = "MESH", + + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, tx2, 0, tz2 + 2 * dz2, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_planks_large.msh", + transf = { + sx2, 0, 0, 0, 0, sy2, 0, 0, 0, 0, sz2, 0, -tx2, 0, tz2 + 2* dz2, 1, + }, + type = "MESH", + + + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, tx3, 0, tz3 + 2 * dz3, 1, + }, + type = "MESH", + + }, { + id = "industry/cargo/lod_0_cargo_construction_goods_large.msh", + transf = { + sx3, 0, 0, 0, 0, sy3, 0, 0, 0, 0, sz3, 0, -tx3, 0, tz3 + 2* dz3, 1, + }, + type = "MESH", + + + + }, { + id = "vehicle/waggon/rungenwagen_1950_lod0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6.1279, 0, 0, 1, + }, + type = "GROUP", + + }, { + id = "vehicle/waggon/rungenwagen_1950_lod0_bogie.grp", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.1279, 0, 0, 1, + }, + type = "GROUP", + + }, + + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 100, + + }, + }, + metadata = { + + description = { + name = _("Stake car"), + description = _("Twin bogie stake car.") + }, + railVehicle = { + topSpeed = 160, + weight = 17, + configs = { + { + axles = { "vehicle/waggon/rungenwagen_1950/lod_2_w1.msh"} + }, + { + axles = { "vehicle/waggon/rungenwagen_1950/lod_1_w1.msh"} + }, + { + axles = { "vehicle/waggon/rungenwagen_1950/lod_0_w1.msh"} + } + }, + soundSet = "waggon_freight_modern" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "LOGS", capacity = 52, loadIndicators = { + { type = "DISCRETE", params = { levels = { + { 2, 3, 4, + 5, 6, 7, }, + { 3, 4, + 5, 6, 7, }, + { 3, 4, + 6, 7, }, + { 3, 4, + 7, }, + { 4, + 7, }, + { 7 }, + { }, + } } }, + --{ ... }, + --{ ... }, + } }, + { type = "STEEL", capacity = 52, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 8, 9, 10, 11, 12, 13 } + } + }, + } + }, + { type = "PLANKS", capacity = 52, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 14, 15, 16, 17, 18, 19, } + } + }, + } + }, + { type = "CONSTRUCTION_MATERIALS", capacity = 52, loadIndicators = { + { + type = "DISCRETE", + params = { + items = { 20, 21, 22, 23, 24, 25, } + } + }, + } + }, + }, + loadSpeed = 3 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 60 + } + + }, + +} +end diff --git a/res/models/model/vehicle/waggon/verbandswagen_v2.mdl b/res/models/model/vehicle/waggon/verbandswagen_v2.mdl new file mode 100755 index 0000000..6e38763 --- /dev/null +++ b/res/models/model/vehicle/waggon/verbandswagen_v2.mdl @@ -0,0 +1,191 @@ +function data() +return { + boundingInfo = { + bbMax = { + 4.9708189964294, 1.5710370540619, 4.468316078186, + }, + bbMin = { + -5.0028338432312, -1.5710370540619, -0.58108800649643, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_2_verbandswagen.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3704, 0, 0.5113, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3704, 0, 0.5113, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 250, + visibleTo = 1300, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_1_verbandswagen.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3704, 0, 0.5113, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3704, 0, 0.5113, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 250, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_0_verbandswagen.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2.3704, 0, 0.5113, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/verbandswagen/verbandswagen_lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.3704, 0, 0.5113, 1, + }, + type = "MESH", + + }, + }, + events = { + + }, + matConfigs = { + { + 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Verbandswagen"), + description = _("Twin-axle boxcar built to standardize the fleet of freight cars.") + }, + railVehicle = { + topSpeed = 120, -- 120.0 + weight = 11, + configs = { + { + axles = { "vehicle/waggon/verbandswagen/verbandswagen_lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/verbandswagen/verbandswagen_lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/verbandswagen/verbandswagen_lod_0_w1.msh" } + } + }, + soundSet = "waggon_freight_old" + }, + transportVehicle = { + carrier = "RAIL", + capacities = { + { type = "LIVESTOCK", capacity = 32 }, + { type = "PLASTIC", capacity = 32 }, + { type = "MACHINES", capacity = 32 }, + { type = "TOOLS", capacity = 32 }, + { type = "FOOD", capacity = 32 }, + { type = "GOODS", capacity = 32 }, + }, + loadSpeed = 2 + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 40 + } + }, + +} +end diff --git a/res/models/model/vehicle/waggon/wagen_bayrisch_1865.mdl b/res/models/model/vehicle/waggon/wagen_bayrisch_1865.mdl new file mode 100755 index 0000000..c25f041 --- /dev/null +++ b/res/models/model/vehicle/waggon/wagen_bayrisch_1865.mdl @@ -0,0 +1,351 @@ +local vec3 = require "vec3" +local transf = require "transf" +function data() +return { + boundingInfo = { + bbMax = { + 4.2660808563232, 1.4711810350418, 3.5781519412994, + }, + bbMin = { + -4.2660808563232, -1.4711810350418, -0.55456000566483, + }, + + }, + collider = { + params = { + + }, + type = "MESH", + + }, + lods = { + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_2_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_2_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9509, 0.4053, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_2_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.9509, -0.4053, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.8019, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_2_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.8019, 0, 0.5068, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 220, + visibleTo = 1070, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_1_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_1_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9509, 0.4053, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_1_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.9509, -0.4053, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.8019, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_1_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.8019, 0, 0.5068, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 120, + visibleTo = 220, + + }, + { + animations = { + + }, + children = { + { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_body.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_d1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2.9509, 0.4053, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_d1.msh", + transf = { + -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, -2.9509, -0.4053, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.8019, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_w1.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.8019, 0, 0.5068, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_interior.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, { + id = "vehicle/waggon/wagen_bayrisch_1865/lod_0_logos.msh", + transf = { + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + }, + type = "MESH", + + }, + }, + events = { + open_all_doors = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_all_doors = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + open_doors_left = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_doors_left = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + open_doors_right = { + [2] = { name = "opend1", forward = true }, + [3] = { name = "opend1", forward = true }, + }, + close_doors_right = { + [2] = { name = "opend1", forward = false }, + [3] = { name = "opend1", forward = false }, + }, + }, + matConfigs = { + { + 0, 0, 0, 0, 0, + }, + }, + static = false, + visibleFrom = 0, + visibleTo = 120, + + }, + }, + metadata = { + description = { + name = _("Bavarian car"), + description = _("Two-axle coach with open platforms on both sides.") + }, + railVehicle = { + topSpeed = 50, + weight = 7, + configs = { + { + axles = { "vehicle/waggon/wagen_bayrisch_1865/lod_2_w1.msh" } + }, + { + axles = { "vehicle/waggon/wagen_bayrisch_1865/lod_1_w1.msh" } + }, + { + axles = { "vehicle/waggon/wagen_bayrisch_1865/lod_0_w1.msh" } + } + }, + soundSet = "waggon_old" + }, + transportVehicle = { + capacities = { + { type = "PASSENGERS", capacity = 30 } + }, + carrier = "RAIL", + loadSpeed = 2, + seats = { + --passangers + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-2.65, -1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.65, -0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-2.65, 0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-2.65, 0.5, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-1.55, 1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.55, 0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-190.0, 0.0, 0.0), vec3.new(-1.55, -0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-1.55, -0.5, 1.1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(-1.05, -1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.05, -0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(-1.05, 0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(-1.05, 0.5, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(-0.1, 1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.1, 0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-190.0, 0.0, 0.0), vec3.new(-0.1, -0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(-0.1, -0.5, 1.1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(.4, -1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(.4, -0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(.4, 0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(.4, 0.5, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(200.0, 0.0, 0.0), vec3.new(1.45, 1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.45, 0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-190.0, 0.0, 0.0), vec3.new(1.45, -0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(180.0, 0.0, 0.0), vec3.new(1.45, -0.5, 1.1))}, + + { group =1, transf = transf.rotZYXTransl(transf.degToRad(20.0, 0.0, 0.0), vec3.new(1.9, -1.1, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, -0.65, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(-20.0, 0.0, 0.0), vec3.new(1.9, 0.9, 1.1))}, + { group =1, transf = transf.rotZYXTransl(transf.degToRad(0.0, 0.0, 0.0), vec3.new(1.9, 0.5, 1.1))}, + + + + } + }, + availability = { + yearFrom = 3000, + yearTo = 3000 + }, + cost = { + price = -1 + }, + maintenance = { + runningCosts = -1, + lifespan = 30 + } + + }, + +} +end diff --git a/workshop_preview.jpg b/workshop_preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96de6cfd32070cc869e556a720e02054e05c0f25 GIT binary patch literal 110273 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 z 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 Gr>Q+1%P{jd6MoC4mex5!5zE*- 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 M_T}n-_Rr$~0|jPaaR2}S literal 0 HcmV?d00001