Merge branch 'master' into master

This commit is contained in:
Deyan Dobromirov 2021-01-05 10:53:35 +02:00 committed by GitHub
commit bf64140daa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 10099 additions and 3877 deletions

31
.github/workflows/glualint.json vendored Normal file
View File

@ -0,0 +1,31 @@
{
"lint_maxScopeDepth": 10,
"lint_syntaxErrors": true,
"lint_syntaxInconsistencies": true,
"lint_deprecated": true,
"lint_trailingWhitespace": true,
"lint_whitespaceStyle": false,
"lint_beginnerMistakes": true,
"lint_emptyBlocks": true,
"lint_shadowing": false,
"lint_gotos": true,
"lint_doubleNegations": true,
"lint_redundantIfStatements": false,
"lint_redundantParentheses": false,
"lint_duplicateTableKeys": true,
"lint_profanity": true,
"lint_unusedVars": false,
"lint_unusedParameters": false,
"lint_unusedLoopVars": false,
"lint_ignoreFiles": ["data/hooks/pre-commit.lua", "lua/entities/gmod_wire_expression2/core/custom/trackasmlib_wire.lua"],
"prettyprint_spaceAfterParens": false,
"prettyprint_spaceAfterBrackets": false,
"prettyprint_spaceAfterBraces": false,
"prettyprint_spaceBeforeComma": false,
"prettyprint_spaceAfterComma": false,
"prettyprint_semicolons": false,
"prettyprint_cStyle": false,
"prettyprint_rejectInvalidCode": false,
"prettyprint_indentation": " "
}

17
.github/workflows/glualint.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download glualint
run: |
wget -O glualint.zip https://github.com/FPtje/GLuaFixer/releases/download/1.11.1/glualint-1.11.1-linux.zip
unzip glualint.zip
- name: Lint
run: ./glualint --config .github/workflows/glualint.json

View File

@ -0,0 +1,279 @@
--[[
* The purpose of this Lua file is to add your track pack pieces to the
* track assembly tool, so they can appear in the tool selection menu.
* Why the name starts with /z/ you may ask. When Gmod loads the game
* it goes trough all the Lua addons alphabetically.
* That means your file name ( The file you are reading right now )
* must be greater alphabetically than /trackasmlib/, so the API of the
* module can be loaded before you can use it like seen below.
]]--
-- Local reference to the module.
local asmlib = trackasmlib
-- Change this to your addon name.
local myAddon = "SligWolf's Minitrains" -- Your addon name goes here
--[[
* Change this if you want to use different in-game type
* You can also use multiple types myType1, myType2,
* myType3, ... myType/n when your addon contains
* multiple model packs.
]]--
local myType = myAddon -- The type your addon resides in the tool with
--[[
* For actually produce an error you can replace the /print/
* statement with one of following API calls:
* http://wiki.garrysmod.com/page/Global/error
* http://wiki.garrysmod.com/page/Global/Error
* http://wiki.garrysmod.com/page/Global/ErrorNoHalt
]]
local myError = ErrorNoHalt
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = asmlib.GetInstPref() -- Addon prefix
-- This is the script path. It tells TA who wants to add these models
-- Do not touch this also, it is used for debugging
local myScript = tostring(debug.getinfo(1).source or "N/A")
myScript = "@"..myScript:gsub("^%W+", ""):gsub("\\","/")
--[[
* This function defines what happens when there is an error present
* Usually you can tell Gmod that you want it to generate an error
* and throw the message to the log also. In this case you will not
* have to change the function name in lots of places
* when you need it to do something else.
--]]
local function myThrowError(vMesg)
local sMesg = tostring(vMesg) -- Make sure the message is string
if(asmlib) then asmlib.LogInstance(sMesg) end -- Output the message into the logs
myError(myScript.." > ("..myAddon.."): "..sMesg) -- Generate an error in the console ( optional )
end
if(asmlib) then
-- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsFormPF = asmlib.GetOpVar("FORM_PREFIXDSV")
local gsModeDB = asmlib.GetOpVar("MODE_DATABASE")
-- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
asmlib.GetOpVar("DIRPATH_DSV")..
gsFormPF:format(myPrefix, gsToolPF.."PIECES")
-- Evaluated to TRUE when the global database is exported
local myFlag = file.Exists(myDsv, "DATA")
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
if(not myFlag) then -- Check for exported global database
local PIECES = asmlib.GetBuilderNick("PIECES")
asmlib.Categorize(myAddon, [[
function(m)
local function conv(x) return " "..x:sub(2,2):upper() end
local r = m:gsub("models/minitrains/",""):gsub("_","/")
local s = r:find("/") or r:find("%.")
r = (s and r:sub(1,s-1) or "other"); o = {r}
if(r == "sw") then o = {"buffer"} end;
for i = 1, #o do o[i] = ("_"..o[i]):gsub("_%w", conv):sub(2,-1) end; return o end
]])
asmlib.WorkshopID(myAddon, 149759773)
if(gsModeDB == "SQL") then sqlBegin() end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your MODEL,
* and then for every active point, you must have one array of
* strings, where the elements match the following data settings.
* You can use the disable event /#/ to make TA auto-fill
* the value provided and you can also add multiple track types myType[1-n].
* If you need to use piece origin/angle with model attachment, you must use
* the attachment extraction event /!/. The model attachment format is
* /!<attachment_name>/ and it depends what attachment name you gave it when you
* created the model. If you need TA to extract the origin/angle from an attachment named
* /test/ for example, you just need to put the string /!test/ in the origin/angle column for that model.
* {MODEL, TYPE, NAME, LINEID, POINT, ORIGIN, ANGLE, CLASS}
* TYPE > This string is the name of the type your stuff will reside in the panel.
* Disabling this, makes it use the value of the /DEFAULT_TYPE/ variable.
* If it is empty uses the string /TYPE/, so make sure you fill this.
* NAME > This is the name of your track piece. Put /#/ here to be auto-generated from
* the model ( from the last slash to the file extension ).
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* POINT > This is the local position vector that TA searches and selects the related
* ORIGIN for. An empty string is treated as taking the ORIGIN.
* Disabling this using the disable event makes it hidden when the active point is searched for
* ORIGIN > This is the origin relative to which the next track piece position is calculated
* An empty string is treated as {0,0,0}. Disabling this makes it non-selectable by the holder
* You can also fill it with attachment event /!/ followed by your attachment name.
* ANGLE > This is the angle relative to which the forward and up vectors are calculated.
* An empty string is treated as {0,0,0}. Disabling this also makes it use {0,0,0}
* You can also fill it with attachment event /!/ followed by your attachment name.
* CLASS > This string is populated up when your entity class is not /prop_physics/ but something else
* used by ents.Create of the gmod ents API library. Keep this empty if your stuff is a normal prop.
]]--
PIECES:Record({"models/minitrains/straight_16.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_16.mdl", "#", "#", 2, "", "-16, -8.507, 1", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_32.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_32.mdl", "#", "#", 2, "", "-32, -8.507, 1", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_64.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_64.mdl", "#", "#", 2, "", "-64, -8.507, 1", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_128.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_128.mdl", "#", "#", 2, "", "-128, -8.507, 1", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_256.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_256.mdl", "#", "#", 2, "", "-256, -8.507, 1", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_512.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_512.mdl", "#", "#", 2, "", "-512, -8.507, 1", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_1024.mdl", "#", "#", 1, "", "0, -8.507, 1"})
PIECES:Record({"models/minitrains/straight_1024.mdl", "#", "#", 2, "", "-1024, -8.507, 1", "0,-180,0"})
asmlib.ModelToNameRule("SET",nil,{"diagonal_","ramp_"},nil)
PIECES:Record({"models/minitrains/straight_diagonal_128.mdl", "#", "#", 1, "", "8, -8.508, 1"})
PIECES:Record({"models/minitrains/straight_diagonal_128.mdl", "#", "#", 2, "", "-136, -8.506, 33", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_diagonal_256.mdl", "#", "#", 1, "", "8, -8.508, 1"})
PIECES:Record({"models/minitrains/straight_diagonal_256.mdl", "#", "#", 2, "", "-264, -8.506, 33", "0,-180,0"})
PIECES:Record({"models/minitrains/straight_diagonal_512.mdl", "#", "#", 1, "", "8, -8.508, 1"})
PIECES:Record({"models/minitrains/straight_diagonal_512.mdl", "#", "#", 2, "", "-520, -8.506, 33", "0,-180,0"})
asmlib.ModelToNameRule("CLR")
PIECES:Record({"models/minitrains/curve_1_90.mdl", "#", "#", 1, "", "-0.011, -8.5, 1"})
PIECES:Record({"models/minitrains/curve_1_90.mdl", "#", "#", 2, "", "-138.51, 130, 1", "0,90,0"})
PIECES:Record({"models/minitrains/curve_2_90.mdl", "#", "#", 1, "", "-0.011, -8.5, 1"})
PIECES:Record({"models/minitrains/curve_2_90.mdl", "#", "#", 2, "", "-168.51, 160, 0.996", "0,90,0"})
PIECES:Record({"models/minitrains/curve_3_90.mdl", "#", "#", 1, "", "-0.011, -8.5, 1"})
PIECES:Record({"models/minitrains/curve_3_90.mdl", "#", "#", 2, "", "-198.51, 190, 0.995", "0,90,0"})
PIECES:Record({"models/minitrains/curve_4_90.mdl", "#", "#", 1, "", "-0.011, -8.5, 1"})
PIECES:Record({"models/minitrains/curve_4_90.mdl", "#", "#", 2, "", "-228.51, 220, 0.994", "0,90,0"})
PIECES:Record({"models/minitrains/curve_5_90.mdl", "#", "#", 1, "", "-0.011, -8.5, 1"})
PIECES:Record({"models/minitrains/curve_5_90.mdl", "#", "#", 2, "", "-258.51, 250, 0.994", "0,90,0"})
PIECES:Record({"models/minitrains/curve_6_90.mdl", "#", "#", 1, "", "-0.011, -8.5, 1"})
PIECES:Record({"models/minitrains/curve_6_90.mdl", "#", "#", 2, "", "-288.51, 280, 0.993", "0,90,0"})
PIECES:Record({"models/minitrains/curve_1_45.mdl", "#", "#", 1, "", "-0.004, -8.506, 1"})
PIECES:Record({"models/minitrains/curve_1_45.mdl", "#", "#", 2, "", "-97.956, 32.044, 1", "0,135,0"})
PIECES:Record({"models/minitrains/curve_2_45.mdl", "#", "#", 1, "", "-0.004, -8.506, 1"})
PIECES:Record({"models/minitrains/curve_2_45.mdl", "#", "#", 2, "", "-119.15, 40.853, 1", "0,135,0"})
PIECES:Record({"models/minitrains/curve_3_45.mdl", "#", "#", 1, "", "-0.004, -8.506, 1"})
PIECES:Record({"models/minitrains/curve_3_45.mdl", "#", "#", 2, "", "-140.368, 49.631, 1", "0,135,0"})
PIECES:Record({"models/minitrains/curve_4_45.mdl", "#", "#", 1, "", "-0.004, -8.506, 1"})
PIECES:Record({"models/minitrains/curve_4_45.mdl", "#", "#", 2, "", "-161.567, 58.434, 1", "0,135,0"})
PIECES:Record({"models/minitrains/curve_5_45.mdl", "#", "#", 1, "", "-0.004, -8.506, 1"})
PIECES:Record({"models/minitrains/curve_5_45.mdl", "#", "#", 2, "", "-182.769, 67.232, 1", "0,135,0"})
PIECES:Record({"models/minitrains/curve_6_45.mdl", "#", "#", 1, "", "-0.004, -8.506, 1"})
PIECES:Record({"models/minitrains/curve_6_45.mdl", "#", "#", 2, "", "-203.983, 76.019, 1", "0,135,0"})
PIECES:Record({"models/minitrains/curve_1_22-5.mdl", "#", "#", 1, "", "-0.005, -8.505, 1"})
PIECES:Record({"models/minitrains/curve_1_22-5.mdl", "#", "#", 2, "", "-53.014, 2.013, 1", "0,157.5,0"})
PIECES:Record({"models/minitrains/curve_2_22-5.mdl", "#", "#", 1, "", "-0.005, -8.505, 1"})
PIECES:Record({"models/minitrains/curve_2_22-5.mdl", "#", "#", 2, "", "-64.492, 4.307, 1", "0,157.5,0"})
PIECES:Record({"models/minitrains/curve_3_22-5.mdl", "#", "#", 1, "", "-0.005, -8.505, 1"})
PIECES:Record({"models/minitrains/curve_3_22-5.mdl", "#", "#", 2, "", "-75.965, 6.599, 1", "0,157.5,0"})
PIECES:Record({"models/minitrains/curve_4_22-5.mdl", "#", "#", 1, "", "-0.005, -8.505, 1"})
PIECES:Record({"models/minitrains/curve_4_22-5.mdl", "#", "#", 2, "", "-87.437, 8.904, 1", "0,157.5,0"})
PIECES:Record({"models/minitrains/curve_5_22-5.mdl", "#", "#", 1, "", "-0.005, -8.505, 1"})
PIECES:Record({"models/minitrains/curve_5_22-5.mdl", "#", "#", 2, "", "-98.913, 11.205,1", "0,157.5,0"})
PIECES:Record({"models/minitrains/curve_6_22-5.mdl", "#", "#", 1, "", "-0.005, -8.505, 1"})
PIECES:Record({"models/minitrains/curve_6_22-5.mdl", "#", "#", 2, "", "-110.405, 13.455, 1", "0,157.5,0"})
PIECES:Record({"models/minitrains/curve_1_s_small.mdl", "#", "#", 1, "", "-0.007, -8.507, 1"})
PIECES:Record({"models/minitrains/curve_1_s_small.mdl", "#", "#", 2, "", "-105.994, 12.497, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_2_s_small.mdl", "#", "#", 1, "", "-0.007, -8.507, 1"})
PIECES:Record({"models/minitrains/curve_2_s_small.mdl", "#", "#", 2, "", "-128.994, 17.497, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_3_s_small.mdl", "#", "#", 1, "", "-0.007, -8.507, 1"})
PIECES:Record({"models/minitrains/curve_3_s_small.mdl", "#", "#", 2, "", "-151.994, 21.497, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_4_s_small.mdl", "#", "#", 1, "", "-0.007, -8.507, 1"})
PIECES:Record({"models/minitrains/curve_4_s_small.mdl", "#", "#", 2, "", "-174.994, 26.497, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_5_s_small.mdl", "#", "#", 1, "", "-0.007, -8.507, 1"})
PIECES:Record({"models/minitrains/curve_5_s_small.mdl", "#", "#", 2, "", "-197.994, 31.497, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_6_s_small.mdl", "#", "#", 1, "", "-0.007, -8.507, 1"})
PIECES:Record({"models/minitrains/curve_6_s_small.mdl", "#", "#", 2, "", "-220.994, 35.497, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_1_s_medium.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_1_s_medium.mdl", "#", "#", 2, "", "-195.966, 72.51, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_2_s_medium.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_2_s_medium.mdl", "#", "#", 2, "", "-237.966, 90.51, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_3_s_medium.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_3_s_medium.mdl", "#", "#", 2, "", "-280.966, 107.51, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_4_s_medium.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_4_s_medium.mdl", "#", "#", 2, "", "-322.966, 125.51, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_5_s_medium.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_5_s_medium.mdl", "#", "#", 2, "", "-365.991, 142.507, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_6_s_medium.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_6_s_medium.mdl", "#", "#", 2, "", "-407.99, 160.51, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_1_s_big.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_1_s_big.mdl", "#", "#", 2, "", "-277.01, 268.511, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_2_s_big.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_2_s_big.mdl", "#", "#", 2, "", "-336.99, 328.521, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_3_s_big.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_3_s_big.mdl", "#", "#", 2, "", "-397.033, 388.521, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_4_s_big.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_4_s_big.mdl", "#", "#", 2, "", "-456.991, 448.521, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_5_s_big.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_5_s_big.mdl", "#", "#", 2, "", "-516.985, 508.521, 1", "0,180,0"})
PIECES:Record({"models/minitrains/curve_6_s_big.mdl", "#", "#", 1, "", "-0.007, -8.504, 1"})
PIECES:Record({"models/minitrains/curve_6_s_big.mdl", "#", "#", 2, "", "-576.985, 568.521, 1", "0,180,0"})
PIECES:Record({"models/minitrains/rerailer.mdl", "#", "Rerailer Double", 1, "", "190, 0, 1.01758"})
PIECES:Record({"models/minitrains/rerailer.mdl", "#", "Rerailer Double", 2, "", "-190, 0, 1.01758", "0,180,0"})
PIECES:Record({"models/minitrains/sw_buffer_stop.mdl", "#", "Buffer Stop", 1, "", "9.43, -8.011, -1", "0,-180,0"})
PIECES:Record({"models/minitrains/switch.mdl", "#", "Switch Y", 1, "", "0, -8.509, 1", "", "gmod_sw_minitrain_switch"})
PIECES:Record({"models/minitrains/switch.mdl", "#", "Switch Y", 2, "", "-128, 6.493, 1", "0,-180,0", "gmod_sw_minitrain_switch"})
PIECES:Record({"models/minitrains/switch.mdl", "#", "Switch Y", 3, "", "-128, -23.512, 1", "0,-180,0","gmod_sw_minitrain_switch"})
PIECES:Record({"models/minitrains/switch_double.mdl", "#", "#", 1, "", "16, 21.512, 1", "", "gmod_sw_minitrain_doubleswitch"})
PIECES:Record({"models/minitrains/switch_double.mdl", "#", "#", 2, "", "-144, 21.513, 1", "0,-180,0", "gmod_sw_minitrain_doubleswitch"})
PIECES:Record({"models/minitrains/switch_double.mdl", "#", "#", 3, "", "16, -8.515, 1", "", "gmod_sw_minitrain_doubleswitch"})
PIECES:Record({"models/minitrains/switch_double.mdl", "#", "#", 4, "", "-144, -8.514, 1", "0,-180,0", "gmod_sw_minitrain_doubleswitch"})
PIECES:Record({"models/minitrains/switch_w_1_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_w1"})
PIECES:Record({"models/minitrains/switch_w_1_128.mdl", "#", "#", 2, "", "-97.94826,32.05148,1", "0,135,0", "gmod_sw_minitrain_switch_w1"})
PIECES:Record({"models/minitrains/switch_w_1_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_w1"})
PIECES:Record({"models/minitrains/switch_w_1_128.mdl", "#", "#", 4, "", "-97.94826,-49.05152,1", "0,-135,0", "gmod_sw_minitrain_switch_w1"})
PIECES:Record({"models/minitrains/switch_w_2_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_w2"})
PIECES:Record({"models/minitrains/switch_w_2_128.mdl", "#", "#", 2, "", "-119.15060, 40.84935,1", "0, 135,0", "gmod_sw_minitrain_switch_w2"})
PIECES:Record({"models/minitrains/switch_w_2_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,-180,0", "gmod_sw_minitrain_switch_w2"})
PIECES:Record({"models/minitrains/switch_w_2_128.mdl", "#", "#", 4, "", "-119.15061,-57.84934,1", "0,-135,0", "gmod_sw_minitrain_switch_w2"})
PIECES:Record({"models/minitrains/switch_w_3_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_w3"})
PIECES:Record({"models/minitrains/switch_w_3_128.mdl", "#", "#", 2, "", "-140.36781,49.63218,1", "0,135,0", "gmod_sw_minitrain_switch_w3"})
PIECES:Record({"models/minitrains/switch_w_3_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_w3"})
PIECES:Record({"models/minitrains/switch_w_3_128.mdl", "#", "#", 4, "", "-140.36781,-66.63219,1", "0,-135,0", "gmod_sw_minitrain_switch_w3"})
PIECES:Record({"models/minitrains/switch_w_4_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_w4"})
PIECES:Record({"models/minitrains/switch_w_4_128.mdl", "#", "#", 2, "", "-87.45033,8.87626,1", "0,157.5,0", "gmod_sw_minitrain_switch_w4"})
PIECES:Record({"models/minitrains/switch_w_4_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_w4"})
PIECES:Record({"models/minitrains/switch_w_4_128.mdl", "#", "#", 4, "", "-87.45378,-25.86791,1", "0,-157.5,0", "gmod_sw_minitrain_switch_w4"})
PIECES:Record({"models/minitrains/switch_w_5_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_w5"})
PIECES:Record({"models/minitrains/switch_w_5_128.mdl", "#", "#", 2, "", "-98.92384,11.17581,1", "0,157.5,0", "gmod_sw_minitrain_switch_w5"})
PIECES:Record({"models/minitrains/switch_w_5_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_w5"})
PIECES:Record({"models/minitrains/switch_w_5_128.mdl", "#", "#", 4, "", "-98.92188,-28.17954,1", "0,-157.5,0", "gmod_sw_minitrain_switch_w5"})
PIECES:Record({"models/minitrains/switch_w_6_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_w6"})
PIECES:Record({"models/minitrains/switch_w_6_128.mdl", "#", "#", 2, "", "-110.40305,13.45934,1", "0,157.5,0", "gmod_sw_minitrain_switch_w6"})
PIECES:Record({"models/minitrains/switch_w_6_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_w6"})
PIECES:Record({"models/minitrains/switch_w_6_128.mdl", "#", "#", 4, "", "-110.40065,-30.46272,1", "0,-157.5,0", "gmod_sw_minitrain_switch_w6"})
PIECES:Record({"models/minitrains/switch_y_1_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_y1"})
PIECES:Record({"models/minitrains/switch_y_1_128.mdl", "#", "#", 2, "", "-97.94826,32.05148,1", "0,135,0", "gmod_sw_minitrain_switch_y1"})
PIECES:Record({"models/minitrains/switch_y_1_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_y1"})
PIECES:Record({"models/minitrains/switch_y_2_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_y2"})
PIECES:Record({"models/minitrains/switch_y_2_128.mdl", "#", "#", 2, "", "-119.15060, 40.84935,1", "0, 135,0", "gmod_sw_minitrain_switch_y2"})
PIECES:Record({"models/minitrains/switch_y_2_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,-180,0", "gmod_sw_minitrain_switch_y2"})
PIECES:Record({"models/minitrains/switch_y_3_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_y3"})
PIECES:Record({"models/minitrains/switch_y_3_128.mdl", "#", "#", 2, "", "-140.36781,49.63218,1", "0,135,0", "gmod_sw_minitrain_switch_y3"})
PIECES:Record({"models/minitrains/switch_y_3_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_y3"})
PIECES:Record({"models/minitrains/switch_y_4_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_y4"})
PIECES:Record({"models/minitrains/switch_y_4_128.mdl", "#", "#", 2, "", "-87.45033,8.87626,1", "0,157.5,0", "gmod_sw_minitrain_switch_y4"})
PIECES:Record({"models/minitrains/switch_y_4_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_y4"})
PIECES:Record({"models/minitrains/switch_y_5_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_y5"})
PIECES:Record({"models/minitrains/switch_y_5_128.mdl", "#", "#", 2, "", "-98.92384,11.17581,1", "0,157.5,0", "gmod_sw_minitrain_switch_y5"})
PIECES:Record({"models/minitrains/switch_y_5_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_y5"})
PIECES:Record({"models/minitrains/switch_y_6_128.mdl", "#", "#", 1, "", "0,-8.5,1", "", "gmod_sw_minitrain_switch_y6"})
PIECES:Record({"models/minitrains/switch_y_6_128.mdl", "#", "#", 2, "", "-110.40305,13.45934,1", "0,157.5,0", "gmod_sw_minitrain_switch_y6"})
PIECES:Record({"models/minitrains/switch_y_6_128.mdl", "#", "#", 3, "", "-128,-8.5,1", "0,180,0", "gmod_sw_minitrain_switch_y6"})
if(gsModeDB == "SQL") then sqlCommit() end
end
asmlib.LogInstance("<<< "..myScript)
else
myThrowError("Failed loading the required module")
end

View File

@ -1,21 +0,0 @@
-- Using render library to draw points location
if(self:GetPointAssist() == 0) then return end
local trRec = asmlib.CacheQueryPiece(trEnt:GetModel())
if(not trRec) then return end
local ID, O = 1, Vector()
while(ID <= trRec.Size) do
local stPOA = asmlib.LocatePOA(trRec,ID); if(not stPOA) then
asmlib.LogInstance("DrawHUD: Cannot assist point #"..tostring(ID)) return nil end
asmlib.SetVector(O,stPOA.O)
O:Rotate(trEnt:GetAngles())
O:Add(trEnt:GetPos()); ID = ID + 1
cam.Start3D( LocalPlayer():EyePos(), LocalPlayer():EyeAngles() )
goMonitor:DrawCircle(O, actrad, "as", "CAM3", {"color",50,50})
cam.End3D()
end; return
cam.Start3D(ply:EyePos(), ply:EyeAngles())
goMonitor:DrawCircle(O, actrad,"xx","CAM3",{"color",50,50})
goMonitor:DrawLine (O, O + R * 10,"r","CAM3",{true})
goMonitor:DrawLine (O, O - R * 10,"b","CAM3")
cam.End3D()

View File

@ -7,6 +7,7 @@
* must be greater alphabetically than /trackasmlib/, so the API of the
* module can be loaded before you can use it like seen below.
]]--
-- Local reference to the module.
local asmlib = trackasmlib
@ -19,7 +20,7 @@ local myAddon = "Test's track pack" -- Your addon name goes here
* myType3, ... myType/n when your addon contains
* multiple model packs.
]]--
local myType = myAddon -- The type your addon resides in the tool with
local myType = myAddon -- The type your addon resides in the tool with
--[[
* For actually produce an error you can replace the /print/
@ -28,10 +29,10 @@ local myType = myAddon -- The type your addon resides in the tool with
* http://wiki.garrysmod.com/page/Global/Error
* http://wiki.garrysmod.com/page/Global/ErrorNoHalt
]]
local myError = print
local myError = ErrorNoHalt
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_")
local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix
-- This is the script path. It tells TA who wants to add these models
-- Do not touch this also, it is used for debugging
@ -51,10 +52,17 @@ local function myThrowError(vMesg)
end
if(asmlib) then
-- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsFormPF = asmlib.GetOpVar("FORM_PREFIXDSV")
-- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
asmlib.GetOpVar("DIRPATH_DSV")..myPrefix..
asmlib.GetOpVar("TOOLNAME_PU")
asmlib.GetOpVar("DIRPATH_DSV")..
gsFormPF:format(myPrefix, gsToolPF.."PIECES")
--[[
* This flag is used when the track pieces list needs to be processed.
* It generally represents the locking file persistence flag. It is
@ -64,7 +72,7 @@ if(asmlib) then
* your local database every time Gmod loads, but then the user will
* skip the available updates of your addon until he/she deletes the DSVs.
]]--
local myFlag = file.Exists(myDsv.."PIECES.txt","DATA")
local myFlag = file.Exists(myDsv, "DATA")
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
@ -90,6 +98,7 @@ if(asmlib) then
end -- Third argument is the delimiter. The default tab is used
asmlib.LogInstance("RegisterDSV done <"..myPrefix..">")
end
--[[
* This is used if you want to make internal categories for your addon
* You must make a function as a string under the hash of your addon
@ -129,35 +138,40 @@ if(asmlib) then
* it must be related to your addon ( default is instance prefix )
]]--
asmlib.LogInstance("ExportCategory start <"..myPrefix..">")
if(CLIENT) then
if(not asmlib.ExportCategory(3, myCategory, myPrefix)) then
myThrowError("Failed to synchronize category")
end
asmlib.LogInstance("ExportCategory done <"..myPrefix..">")
else
asmlib.LogInstance("ExportCategory skip <"..myPrefix..">")
end
if(CLIENT) then -- Category handling is client side only
if(not asmlib.IsEmpty(myCategory)) then
if(not asmlib.ExportCategory(3, myCategory, myPrefix)) then
myThrowError("Failed to synchronize category")
end; asmlib.LogInstance("ExportCategory done <"..myPrefix..">")
else asmlib.LogInstance("ExportCategory skip <"..myPrefix..">") end
else asmlib.LogInstance("ExportCategory server <"..myPrefix..">") end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your model,
* In the square brackets goes your MODEL,
* and then for every active point, you must have one array of
* strings, where the elements match the following data settings.
* You can use the disable event /#/ to make TA auto-fill
* the value provided and you can also add miltiple track types myType[1-n].
* the value provided and you can also add multiple track types myType[1-n].
* If you need to use piece origin/angle with model attachment, you must use
* the attachment extraction event /!/. The model attachment format is
* /!<attachment_name>/ and it depemds what attachment name you gave it when you
* /!<attachment_name>/ and it depends what attachment name you gave it when you
* created the model. If you need TA to extract the origin/angle from an attachment named
* /test/ for example, you just need to put the string /!test/ in the origin/angle column for that model.
* {TYPE, NAME, LINEID, POINT, ORIGIN, ANGLE, CLASS}
* {MODEL, TYPE, NAME, LINEID, POINT, ORIGIN, ANGLE, CLASS}
* MODEL > This string contains the path to your /*.mdl/ file. It is mandatory and
* taken in pairs with LINEID, it forms the unique identifier of every record.
* When used in /DSV/ mode ( like seen below ) is is used as a hash index.
* TYPE > This string is the name of the type your stuff will reside in the panel.
* Disabling this, makes it use the value of the /DEFAULT_TYPE/ variable.
* If it is empty uses the string /TYPE/, so make sure you fill this.
* NAME > This is the name of your track piece. Put /#/ here to be auto-generated from
* the model ( from the last slash to the file extension ).
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. The ID is the same as the row index under a given model key.
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* POINT > This is the local position vector that TA searches and selects the related
* ORIGIN for. An empty string is treated as taking the ORIGIN.
* Disabling this using the disable event makes it hidden when the active point is searched for
@ -166,18 +180,18 @@ if(asmlib) then
* You can also fill it with attachment event /!/ followed by your attachment name.
* ANGLE > This is the angle relative to which the forward and up vectors are calculated.
* An empty string is treated as {0,0,0}. Disabling this also makes it use {0,0,0}
* You can also fill it with attachment event /!/ followed by your attachment name.
* You can also fill it with attachment event /!/ followed by your attachment name.
* CLASS > This string is populated up when your entity class is not /prop_physics/ but something else
* used by ents.Create of the gmod ents API library. Keep this empty if your stuff is a normal prop.
]]--
local myTable = {
local myPieces = {
["models/props_phx/construct/metal_plate1x2.mdl"] = { -- Here goes the model of your pack
{myType ,"#", 1, "","0,-47.455105,1.482965","0,-90,0",""}, -- The first point parameter
{myType ,"#", 2, "","0, 47.455105,1.482965","0, 90,0",""} -- The second point parameter
{myType , gsSymOff, 1, "","0,-47.455105,1.482965","0,-90,0",""}, -- The first point parameter
{myType , gsSymOff, 2, "","0, 47.455105,1.482965","0, 90,0",""} -- The second point parameter
},
["models/props_phx/construct/windows/window1x2.mdl"] = {
{myType ,"#", 1, "","0,-23.73248,1.482965","0,-90,0",""},
{myType ,"#", 2, "","0, 71.17773,1.482965","0, 90,0",""}
{myType , gsSymOff, gsSymOff, "","0,-23.73248,1.482965","0,-90,0",""},
{myType , gsSymOff, gsSymOff, "","0, 71.17773,1.482965","0, 90,0",""}
}
}
@ -200,15 +214,93 @@ if(asmlib) then
* sPref > An export file custom prefix. For synchronizing it must be related to your addon
* sDelim > The delimiter used by the server/client ( default is a tab symbol )
]]--
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("PIECES", myTable, true, myPrefix)) then
myThrowError("Failed to synchronize track pieces")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("PIECES", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
if(not asmlib.IsEmpty(myPieces)) then
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("PIECES", myPieces, true, myPrefix)) then
myThrowError("Failed to synchronize track pieces")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("PIECES", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your MODELBASE,
* and then for every active point, you must have one array of
* strings and numbers, where the elements match the following data settings.
* {MODELBASE, MODELADD, ENTCLASS, LINEID, POSOFF, ANGOFF, MOVETYPE, PHYSINIT, DRSHADOW, PHMOTION, PHYSLEEP, SETSOLID}
* MODELBASE > This string contains the path to your base /*.mdl/ file the additions are gonna be attached to.
* It is mandatory and taken in pairs with LINEID, it forms the unique identifier of every record.
* When used in /DSV/ mode ( like seen below ) is is used as a hash index.
* MODELADD > This is the /*.mdl/ path of the addition entity. It is mandatory and cannot be disabled.
* ENTCLASS > This is the class of the addition entity. It is mandatory and cannot be disabled.
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* POSOFF > This is the local position vector offset that TA uses to place the addition relative to MODELBASE.
* A NULL, empty, disabled or not available string is treated as taking {0,0,0}.
* ANGOFF > This is the local angle offset that TA uses to place the addition.
* A NULL, empty, disabled or not available string is treated as taking {0,0,0}.
* MOVETYPE > This internally calls /Entity:SetMoveType/ if the database parameter is zero or greater.
* PHYSINIT > This internally calls /Entity:PhysicsInit/ if the database parameter is zero or greater.
* DRSHADOW > This internally calls /Entity:DrawShadow/ if the database parameter is not zero.
* The call evaluates to /true/ for positive numbers and /false/ for negative.
* When the parameter is equal to zero skips the call of /Entity:DrawShadow/
* PHMOTION > This internally calls /PhysObj:EnableMotion/ if the database parameter is not zero on the validated physics object.
* The call evaluates to /true/ for positive numbers and /false/ for negative.
* When the parameter is equal to zero skips the call of /Entity:EnableMotion/
* PHYSLEEP > This internally calls /PhysObj:Sleep/ if the database parameter is grater than zero on the validated physics object.
* When the parameter is equal or less than zero skips the call of /Entity:Sleep/
* SETSOLID > This internally calls /Entity:SetSolid/ if the database parameter is zero or greater.
]]--
local myAdditions = {}
if(not asmlib.IsEmpty(myAdditions)) then
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("ADDITIONS", myAdditions, true, myPrefix)) then
myThrowError("Failed to synchronize track additions")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("ADDITIONS", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your TYPE,
* and then for every active point, you must have one array of
* strings and numbers, where the elements match the following data settings.
* {TYPE, LINEID, NAME}
* TYPE > This is the category under your physical properties are stored internally.
* It is mandatory and taken in pairs with LINEID, it forms the unique identifier of every record.
* When used in /DSV/ mode ( like seen below ) is is used as a hash index.
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* NAME > This stores the name of the physical property. It must an actual physical property.
]]--
local myPhysproperties = {}
if(not asmlib.IsEmpty(myPhysproperties)) then
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("PHYSPROPERTIES", myPhysproperties, true, myPrefix)) then
myThrowError("Failed to synchronize track additions")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("PHYSPROPERTIES", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
end
asmlib.LogInstance("<<< "..myScript)
else

View File

@ -1,95 +0,0 @@
-- Local reference to the module
local asmlib = trackasmlib
-- Change this to your addon name
local myAddon = "Ron's test maglev" -- Your addon name goes here
local myType = myAddon -- The type your addon resides in the tool with
--[[
* For actually produce an error you can replace the /print/
* statement with one of following API calls:
* http://wiki.garrysmod.com/page/Global/error
* http://wiki.garrysmod.com/page/Global/Error
* http://wiki.garrysmod.com/page/Global/ErrorNoHalt
]]
local myError = print
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_")
-- This is the script path. It tells TA who wants to add these models
-- Do not touch this also, it is used for debugging
local myScript = tostring(debug.getinfo(1).source or "N/A")
myScript = "@"..myScript:gsub("^%W+", ""):gsub("\\","/")
local function myThrowError(vMesg)
local sMesg = tostring(vMesg) -- Make sure the message is string
if(asmlib) then asmlib.LogInstance(sMesg) end -- Output the message into the logs
myError(myScript.." > ("..myAddon.."): "..sMesg) -- Generate an error in the console ( optional )
end
if(asmlib) then
-- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
asmlib.GetOpVar("DIRPATH_DSV")..myPrefix..
asmlib.GetOpVar("TOOLNAME_PU")
local myFlag = file.Exists(myDsv.."PIECES.txt","DATA")
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
asmlib.LogInstance("RegisterDSV start <"..myPrefix..">")
if(myFlag) then -- Your DSV must be registered only once when loading for the first time
asmlib.LogInstance("RegisterDSV skip <"..myPrefix..">")
else -- If the locking file is not located that means this is the first run of your script
if(not asmlib.RegisterDSV(myScript, myPrefix)) then -- Register the DSV prefix and check for error
myThrowError("Failed to register DSV") -- Throw the error if fails
end -- Third argument is the delimiter. The default tab is used
asmlib.LogInstance("RegisterDSV done <"..myPrefix..">")
end
local myCategory = {
[myType] = {Txt = [[
function(m)
local function conv(x) return " "..x:sub(2,2):upper() end
local r = m:gsub("models/ron/maglev/",""):gsub("[\\/]([^\\/]+)$","");
if(r:find("track")) then r = r:gsub("track/","")
elseif(r:find("support")) then r = nil end; return r and {("_"..r):gsub("_%w",conv):sub(2,-1)}
end
]]}
}
asmlib.LogInstance("ExportCategory start <"..myPrefix..">")
if(CLIENT) then
if(not asmlib.ExportCategory(3, myCategory, myPrefix)) then
myThrowError("Failed to synchronize category")
end
asmlib.LogInstance("ExportCategory done <"..myPrefix..">")
else
asmlib.LogInstance("ExportCategory skip <"..myPrefix..">")
end
local myTable = {
["models/ron/maglev/track/straight/straight_128.mdl"] = { -- Here goes the model of your pack
{myType ,"#", 1, "","!1","",""}, -- The first point parameter
{myType ,"#", 2, "","!2","",""} -- The second point parameter
}
}
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("PIECES", myTable, true, myPrefix)) then
myThrowError("Failed to synchronize track pieces")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("PIECES", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
asmlib.LogInstance("<<< "..myScript)
else
myThrowError("Failed loading the required module")
end

View File

@ -0,0 +1,83 @@
asmlib.Categorize("Shinji85's Rails",[[function(m) local c
local r = m:gsub("models/shinji85/train/rail_", "")
if(r:find("cross")) then c = "crossing"
elseif(r:find("switch")) then c = "switch"
elseif(r:find("curve")) then c = "curve"
elseif(r:find("bumper")) then c = "bumper"
elseif(r:find("junction")) then c = "junction"
elseif(r:find("%dx")) then c = "straight"
end; c = (c and c:gsub("^%l", string.upper) or nil) return c end]])
asmlib.ModelToNameRule("SET",nil,{"rail_","straight_"},nil)
PIECES:Record({"models/shinji85/train/rail_1x.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_1x.mdl", "#", "#", 2, "", "-128,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_2x.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_2x.mdl", "#", "#", 2, "", "-256,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_4x.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_4x.mdl", "#", "#", 2, "", "-512,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_8x.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_8x.mdl", "#", "#", 2, "", "-1024,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_16x.mdl", "#","#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_16x.mdl", "#","#", 2, "", "-2048,0,7.346", "0,180,0"})
asmlib.ModelToNameRule("SET",nil,{"_crossing","","rail_","crossing_"},nil)
PIECES:Record({"models/shinji85/train/rail_4x_crossing.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_4x_crossing.mdl", "#", "#", 2, "", "-512,0,7.346", "0,180,0"})
asmlib.ModelToNameRule("SET",{1,5})
PIECES:Record({"models/shinji85/train/rail_cross_4x.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_cross_4x.mdl", "#", "#", 2, "", "-512,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_cross_4x.mdl", "#", "#", 3, "", "-256,-256,7.346", "0,270,0"})
PIECES:Record({"models/shinji85/train/rail_cross_4x.mdl", "#", "#", 4, "", "-256,256,7.346", "0,90,0"})
asmlib.ModelToNameRule("SET",{1,5},{"_crossing","","double_","crossing_double_"})
PIECES:Record({"models/shinji85/train/rail_double_4x_crossing.mdl", "#", "#", 1, "", "0,128,7.346"})
PIECES:Record({"models/shinji85/train/rail_double_4x_crossing.mdl", "#", "#", 2, "", "-512,128,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_double_4x_crossing.mdl", "#", "#", 3, "", "0,-128,7.346"})
PIECES:Record({"models/shinji85/train/rail_double_4x_crossing.mdl", "#", "#", 4, "", "-512,-128,7.346", "0,180,0"})
asmlib.ModelToNameRule("SET",{1,5})
PIECES:Record({"models/shinji85/train/rail_bumper.mdl", "#", "#", 1, "", "0,0,7.346"})
asmlib.ModelToNameRule("SET",{1,5},{"double_bumper","bumper_double"},nil)
PIECES:Record({"models/shinji85/train/rail_double_bumper.mdl", "#", "#", 1, "", "0,128,7.346"})
PIECES:Record({"models/shinji85/train/rail_double_bumper.mdl", "#", "#", 2, "", "0,-128,7.346"})
asmlib.ModelToNameRule("SET",{1,5})
--- Shinji85 Curve ---
PIECES:Record({"models/shinji85/train/rail_curve_r1.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_r1.mdl", "#", "#", 2, "", "-1060.12341 ,139.56763 ,7.346", "0,165,0"})
PIECES:Record({"models/shinji85/train/rail_curve_r2.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_r2.mdl", "#", "#", 2, "", "-993.86572 ,130.84471 ,7.346", "0,165,0"})
PIECES:Record({"models/shinji85/train/rail_curve_r3.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_r3.mdl", "#", "#", 2, "", "-927.60797 ,122.1218 ,7.346", "0,165,0"})
PIECES:Record({"models/shinji85/train/rail_curve_cc.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_cc.mdl", "#", "#", 2, "", "-966.40515 ,128, 7.346", "0,165,0"})
--- Shinji85 Switch ---
asmlib.ModelToNameRule("SET",{1,5},{"r_","right_","l_","left_"},nil)
PIECES:Record({"models/shinji85/train/rail_r_switch.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_r_switch.mdl", "#", "#", 2, "", "-1024,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_r_switch.mdl", "#", "#", 3, "", "-966.40515 ,128, 7.346", "0,165,0"})
PIECES:Record({"models/shinji85/train/rail_l_switch.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_l_switch.mdl", "#", "#", 2, "", "-1024,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_l_switch.mdl", "#", "#", 3, "", "-966.40515 ,-128, 7.346", "0,195,0"})
asmlib.ModelToNameRule("SET",{1,5})
--- Shinji85 Raccordi ---
PIECES:Record({"models/shinji85/train/rail_x_junction.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_x_junction.mdl", "#", "#", 2, "", "-494.55,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_x_junction.mdl", "#", "#", 3, "", "-33.129,-123.63866,7.346", "0,-30,0"})
PIECES:Record({"models/shinji85/train/rail_x_junction.mdl", "#", "#", 4, "", "-461.42175,123.63649,7.346", "0,150,0"})
PIECES:Record({"models/shinji85/train/rail_cx.mdl", "#", "Counter X", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_cx.mdl", "#", "Counter X", 2, "", "-362.51361,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_cs.mdl", "#", "Counter Switch", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_cs.mdl", "#", "Counter Switch", 2, "", "-908.81165,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_cxfix.mdl", "#", "Counter X Fix", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_cxfix.mdl", "#", "Counter X Fix", 2, "", "-149.48648,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_csfix.mdl", "#", "Counter Switch Fix", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_csfix.mdl", "#", "Counter Switch Fix", 2, "", "-115.18847,0,7.346", "0,180,0"})
PIECES:Record({"models/shinji85/train/rail_curve_r11.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_r11.mdl", "#", "#", 2, "", "-1086.11584 ,449.88458 ,7.346", "0,135,0"})
PIECES:Record({"models/shinji85/train/rail_curve_r12.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_r12.mdl", "#", "#", 2, "", "-905.09656 ,374.90414 ,7.346", "0,135,0"})
PIECES:Record({"models/shinji85/train/rail_curve_r13.mdl", "#", "#", 1, "", "0,0,7.346"})
PIECES:Record({"models/shinji85/train/rail_curve_r13.mdl", "#", "#", 2, "", "-724.07727 ,299.92276 ,7.346", "0,135,0"})
--- Shinji's Switchers ---
ADDITIONS:Record({"models/shinji85/train/rail_r_switch.mdl","models/shinji85/train/sw_lever.mdl" ,"buttonswitch",1,"-100,125,0","",-1,-1,-1,0,-1,-1})
ADDITIONS:Record({"models/shinji85/train/rail_r_switch.mdl","models/shinji85/train/rail_r_switcher1.mdl","prop_dynamic",2,"","",MOVETYPE_VPHYSICS,SOLID_VPHYSICS,-1,-1,1,SOLID_VPHYSICS})
ADDITIONS:Record({"models/shinji85/train/rail_r_switch.mdl","models/shinji85/train/rail_r_switcher2.mdl","prop_dynamic",3,"","",MOVETYPE_VPHYSICS,SOLID_VPHYSICS,-1, 0,-1,SOLID_NONE})
ADDITIONS:Record({"models/shinji85/train/rail_l_switch.mdl","models/shinji85/train/sw_lever.mdl" ,"buttonswitch",1,"-100,-125,0","0,180,0",-1,-1,-1,0,-1,-1})
ADDITIONS:Record({"models/shinji85/train/rail_l_switch.mdl","models/shinji85/train/rail_l_switcher1.mdl","prop_dynamic",2,"","",MOVETYPE_VPHYSICS,SOLID_VPHYSICS,-1,-1,1,SOLID_VPHYSICS})
ADDITIONS:Record({"models/shinji85/train/rail_l_switch.mdl","models/shinji85/train/rail_l_switcher2.mdl","prop_dynamic",3,"","",MOVETYPE_VPHYSICS,SOLID_VPHYSICS,-1, 0,-1,SOLID_NONE})

View File

@ -1,4 +1,4 @@
asmlib.GetCategory("Ron's 2ft track pack", [[function(m)
asmlib.Categorize("Ron's 2ft track pack", [[function(m)
local function conv(x) return " "..x:sub(2,2):upper() end
local r = m:gsub("models/ron/2ft/","")
local s, o, n = r:find("/")

View File

@ -1,8 +1,9 @@
@name TA Exporter Generator
@inputs
@outputs [Dev Chip Base]:entity [F Cen Prg]:vector Time Test PU PD
@persist Time DF StraightUp Interval TrackPieceW TrackRangerMaxW TrackPieceH TrackRangerMaxH TrackOriginInset TrackOriginTolerance:string
@persist [Cen Prg ORG F R U]:vector [Prop Mod]:string [Dev Chip Base]:entity ARC:array OutagePercentTolerance PointID
@persist Time DF StraightUp Interval TrackPieceW TrackRangerMaxW TrackPieceH TrackRangerMaxH TrackOriginInset
@persist [Cen Prg ORG MOrigin F R U]:vector [Prop Mod]:string [Dev Chip Base]:entity ARC:array OutagePercentTolerance
@persist PointID TrackOriginTolerance:string TrackJumpBackMultiplier MExtraDepth MExtraSide TrackStepDelta
@persist OverrideZ [InsertTypeDB TypeSegment PieceType PieceName]:string PrintCount PrintTime
@trigger none
@ -98,7 +99,7 @@ function void printPoint(Type:string, Name:string, Mode:string, Hash:string, Poi
if(first() || dupefinished())
{
# What model to search for vector offset
Prop = "models/sprops/cuboids/height06/size_1/cube_6x6x6.mdl"
Prop = "models/sprops/cuboids/non_set/cube_18x18x18.mdl"
# Piece type that you are using. It is mandatory
# It is usually derived from the addon mame
@ -115,53 +116,65 @@ if(first() || dupefinished())
# Set this to <>0 to use point generation via iterative binary search
# Set this to positive to make the algorithm trace forward
# Set this to negative to make the algorithm trace backwards
PointID = 0
PointID = 1
# What segment type are we processing
# road --> Roads ( PHX roads )
# monorail --> PHX monorail
# general --> The two beam tracks segmentnts that we all love and joy
TypeSegment = "monorail"
TypeSegment = "road"
# Set this to <>0 for direct Z local offset
# This us used to override the Z axis magntude
OverrideZ = 0
OverrideZ = 5.65723
# What mode will the point be exportet as
InsertTypeDB = "INS"
# Automatically managed via the point ID
# If positive uses direct point generation
Interval = (PointID == 0) * 10
# Outage % Defines how sensitive the algorithm is
# Lesser number means more sensitive
OutagePercentTolerance = 3
OutagePercentTolerance = 1
# Prints the delta if this many switches were made
# The higher the number it will wait more before it prints
PrintCount = 100
# This is automatically managed by the point ID selected
# Set the coefficient before the sign() to adjust the process speed
# The fighed the number the less iteration are made
DF = 0.4 * sign(PointID)
# Set the coefficient to adjust the process speed
# The higher the number the less iterations are made
TrackStepDelta = 0.02
# Track piece width and height
# The bigger the numbers the more cross section your track piece has
TrackPieceW = 30
TrackPieceH = 30
TrackPieceW = 800
TrackPieceH = 60
# Generate the origin with an inset
# This is used for bad model ends where the program cannot start sometimes
# Keep this to the minimum if your tracks are quite good and you want accuracy
TrackOriginInset = 0.0001
TrackOriginInset = 0.001
# Tolerance of the error gained when generating an active point
# This translates to 10 to the power of negative something..
# The higher the power the less error algorithm has
TrackOriginTolerance = "e-14"
TrackOriginTolerance = "e-12"
# Must be positive and slaller than two for the binery search to work
# Defines how far does the sensor origin goes back anfter it goes out of bounds
# The higher the mumber the long time it will take and will be more accurate
TrackJumpBackMultiplier = 1.7
# Automatic value adjustment
Interval = (PointID == 0) * 10
TrackRangerMaxW = TrackPieceW * 2
TrackRangerMaxH = TrackPieceH * 2
PrintCount = abs(PrintCount)
PrintTime = PrintCount
TrackStepDelta = abs(TrackStepDelta)
DF = clamp(TrackStepDelta, 0.0001, 1) * sign(PointID)
TrackJumpBackMultiplier = clamp(TrackJumpBackMultiplier, 1.001, 1.999)
# Initialization
Time = 0
Chip = entity()
CPos = Chip:pos()
@ -174,10 +187,6 @@ if(first() || dupefinished())
No = findByModel(Prop)
Dev = findClosest(Chip:pos())
Dev:setColor(0,255,0,255)
TrackRangerMaxW = TrackPieceW * 2
TrackRangerMaxH = TrackPieceH * 2
PrintCount = abs(PrintCount)
PrintTime = PrintCount
# Set to > 0 for straight rails and place it between the beams
# The angle must be [0,0,0]
UpVec = Dev:pos() - CPos
@ -242,10 +251,9 @@ if(Interval > 0)
{
if(Time <= 0)
{
print(_HUD_PRINTTALK,"Finished: "+Prop)
Dev:setColor(255,255,255,255)
selfDestruct()
# print(_HUD_PRINTTALK,Dev:massCenter())
# print(_HUD_PRINTTALK,Dev:pos())
}
else
{
@ -283,11 +291,12 @@ if(Interval > 0)
Cen = Cen - DF * F
ALR = clampTrace(Cen,TrackPieceW,F,R,TrackRangerMaxW,0,0), VL = ALR[1,number], VR = ALR[2,number]
Time = Time - 1
DF = DF * 1.7
DF = DF * TrackJumpBackMultiplier
}
DF = 0.5 * DF
if(PrintTime == 0 && PrintCount != 0){
print(_HUD_PRINTTALK,"Delta: "+toString(DF))
if(PrintTime == 0 && PrintCount != 0)
{
print(_HUD_PRINTTALK,"Delta: "+toString(DF)+" Time: "+toString(Time))
PrintTime = PrintCount
}
}else{
@ -306,7 +315,12 @@ if(Interval > 0)
PRL = clampTrace(Cen - TrackOriginInset * F ,0,F,R,TrackRangerMaxW,3,4)
TrackExtraDepth = ((ARC[1,number] - PU) / 2) + PU
TrackExtraSide = PRL[3,number]
}else{ print(_HUD_PRINTTALK,"Segment type: " + TypeSegment + " not developed") }
}
else
{
print(_HUD_PRINTTALK,"Segment type missing error: " + TypeSegment)
selfDestruct()
}
ORG = Cen + TrackPieceH * U
ORG = ORG - TrackExtraSide * R
@ -315,19 +329,49 @@ if(Interval > 0)
O = Base:toLocalAxis(ORG - Base:pos())
A = Base:toLocal((F):toAngle(U))
S = toString(DF):find(TrackOriginTolerance)
if(S > 0)
# print(_HUD_PRINTTALK,"Origin: "+toString(O), (MOrigin - O):length())
if(MOrigin:length() > 0 && (MOrigin - O):length() > 1)
{
print(_HUD_PRINTTALK,"Tollerance error: "+toString((MOrigin - O):length()))
print(_HUD_PRINTTALK,"Extra side : "+toString(MExtraSide)+" > "+toString(TrackExtraSide))
print(_HUD_PRINTTALK,"Extra depth: "+toString(MExtraDepth)+" > "+toString(TrackExtraDepth))
print(_HUD_PRINTTALK,"Extra inset: "+toString(TrackOriginInset))
selfDestruct()
}
if(DF > 1)
{
print(_HUD_PRINTTALK,"Origin delta error: "+toString(DF))
print(_HUD_PRINTTALK,"Extra side : "+toString(TrackExtraSide))
print(_HUD_PRINTTALK,"Extra depth: "+toString(TrackExtraDepth))
print(_HUD_PRINTTALK,"Extra inset: "+toString(TrackOriginInset))
selfDestruct()
}
if(S > 0)
{
print(_HUD_PRINTTALK,"Finish: "+toString(DF))
printPoint(PieceType,PieceName,InsertTypeDB,Mod,PointID,O+TrackOriginInset*F,A,OverrideZ)
selfDestruct()
}
else
{
if(PrintTime == 0 && PrintCount != 0)
{
print(_HUD_PRINTTALK,"Delta: "+toString(DF))
PrintTime = PrintCount
}
}
holoPos(2,Base:pos() + O:rotate(Base:angles()))
Cen = Cen + DF * F
if(PrintTime == 0 && PrintCount != 0){
print(_HUD_PRINTTALK,"Delta: "+toString(DF))
PrintTime = PrintCount
}
# Memory crap
MOrigin = O
MExtraDepth = TrackExtraDepth
MExtraSide = TrackExtraSide
}
}

View File

@ -9,10 +9,12 @@ local fVer = "asmlib.SetOpVar%s*%(%s*\"TOOL_VERSION\"%s*,%s*\"%d+%.%d+\"%s*%)"
local fNum = "%s*%d+%s*%.%s*%d+%s*"
local tEnd = {["DOS"]="\r\n", ["UNX"]="\n"}
function trim(s) return s:match("^%s*(.-)%s*$") end
local sLog = tostring(arg[4]):gsub("\\","/")
local fLog, sE = io.open(sLog,"a+")
if(fLog) then io.output(fLog) end
if(fLog) then io.output(fLog) else io.output("Error: "..sE) end
io.write(fSta:format("START"))
@ -52,11 +54,16 @@ while(sI) do
io.write("Version found at line ["..nL.."]\n")
local vB, vE = sI:find(fNum)
if(vB and vE) then
io.write("Version > ["..sI:sub(vB, vE).."]\n")
local nW, nF = math.modf(tonumber(sI:sub(vB, vE)))
local sF = (tonumber(tostring(nF):sub(3,-1))+1)
sI = sI:sub(1,vB-1)..nW.."."..sF..sI:sub(vE+1,-1)
io.write("Extract > ["..sF.."]\n")
print(sI:sub(vB, vE))
local nD = sI:sub(vB, vE):find(".", 1, true)
if(nD) then
local sW = trim(sI:sub(vB, vB + nD - 2))
local sF = trim(sI:sub(vB + nD, vE))
io.write("Version > ["..sW.."]["..sF.."]\n")
sF = tostring(tonumber(sF) + 1)
sI = sI:sub(1,vB-1)..sW.."."..sF..sI:sub(vE+1,-1)
io.write("Extract > ["..sF.."]\n")
end
end
end
nL = nL + 1
@ -72,5 +79,3 @@ if(fLog) then
fLog:flush()
fLog:close()
end

View File

@ -16,9 +16,9 @@
#define MATCH_MODEL_DIR "models"
// <.mdl> OR what the model in the line ends with
#define MATCH_MODEL_END ".mdl"
// <asmlib.GetCategory("PHX Metal")>
// <asmlib.Categorize("PHX Metal")>
// A new track type starts from this line ( e.g. "PHX Metal" )
#define MATCH_START_NEW_TYPE "asmlib.GetCategory(\""
#define MATCH_START_NEW_TYPE "asmlib.Categorize(\""
// The log buffer result string length
#define MAX_BUFFER_LOG 2000
@ -37,7 +37,7 @@
vsnprintf(logBuffer, MAX_BUFFER_LOG, form, args);
va_end(args);
if(log==NULL){ printf(logBuffer); printf("\n"); }
else{ fprintf(log, logBuffer); fprintf(log,"\n"); }
else{ fprintf(log, "%s", logBuffer); fprintf(log, "%s", "\n"); }
}
char **strExplode(char *strIn)
@ -122,15 +122,15 @@
{
unsigned int L = strlen(strData);
if(L == 0){ return strData; } // Nothing to trim
unsigned int S = 0, E = L;
while((!(strData[S] > ' ') || !(strData[E] > ' ')) && (S >= 0) && (S <= L) && (E >= 0) && (E <= L))
unsigned int S = 0, E = L - 1;
while((!(strData[S] > ' ') || !(strData[E] > ' '))
&& (S >= 0) && (S <= L) && (E >= 0) && (E <= L))
{
if(strData[S] <= ' '){ S++; }
if(strData[E] <= ' '){ E--; }
}
if(S == 0 && E == L)
{
logSystem(fLog,"trimAll: Already trimmed");
{ // logSystem(fLog,"trimAll: Already trimmed {<%s>,%d,%d,%d}",strData,S,E,L);
return strData;
}
if((S >= 0) && (S <= L) && (E >= 0) && (E <= L) && (S <= E)){

View File

@ -3,7 +3,6 @@ setlocal enabledelayedexpansion
:: The location of the script ( Do not change )
set emd_chew_pathb=%~dp0
echo Running in: %emd_chew_pathb%
:: The path to Garry's mod
set emd_chew_gmod=F:\Games\Steam\steamapps\common\GarrysMod
@ -14,14 +13,18 @@ set emd_chew_addon=%emd_chew_gmod%\garrysmod\addons
:: Location of "gmad.exe"
set emd_chew_binloc=%emd_chew_gmod%\bin
:: The path to the "trackassembly_init.lua"
set emd_chew_dbase=%emd_chew_addon%\TrackAssemblyTool_GIT\lua\autorun\trackassembly_init.lua
:: Repository local clone locatioon
set emd_chew_repo=%emd_chew_addon%\TrackAssemblyTool_GIT
:: The path to the "garrysmod/data/trackassembly/trackasmlib_db.txt"
:: Such file is generated when tool control panel is refreshed in developer mode
set emd_chew_dbase=%emd_chew_gmod%\garrysmod\data\trackassembly\trackasmlib_db.txt
:: The path to the skipped models list
set emd_chew_skip=%emd_chew_addon%\TrackAssemblyTool_GIT\data\peaces_manager\models_ignored.txt
set emd_chew_skip=%emd_chew_repo%\data\peaces_manager\models_ignored.txt
:: How many addons are to be processed
set emd_chew_addcnt=14
set emd_chew_addcnt=16
:: GMA addons to be processed
set emd_chew_addlst[1]=sligwolfs_minitrains_149759773
@ -30,14 +33,16 @@ set emd_chew_addlst[3]=sligwolfs_rerailer_132843280
set emd_chew_addlst[4]=sprops_workshop_edition_173482196
set emd_chew_addlst[5]=[1-gauge]_magnums_train_model_pack_290130567
set emd_chew_addlst[6]=shinji85s_rails_train_pack_326640186
set emd_chew_addlst[7]=sligwolfs_rail_car_173717507
set emd_chew_addlst[8]=steventechnos_buildings_pack_331192490
set emd_chew_addlst[7]=sligwolfs_bgc_173717507
set emd_chew_addlst[8]=(classic)_steventechnos_buildings_and_roads_pack__331192490
set emd_chew_addlst[9]=mr.train_m_gauge_517442747
set emd_chew_addlst[10]=g_scale_track_pack_718239260
set emd_chew_addlst[11]=rons_minitrain_props_728833183
set emd_chew_addlst[12]=battleships_abandoned_rails(penn_central_simulator_2017)(wip)_807162936
set emd_chew_addlst[13]=alexcookies_2ft_track_pack_740453553
set emd_chew_addlst[14]=joes_track_pack_1658816805
set emd_chew_addlst[15]=steventechnos_buildings_and_roads_pack_2.0_1888013789
set emd_chew_addlst[16]=trackmania_united_track_props_1955876643
:: Folder list for extraction and the directories they will be extracted
set emd_chew_adddir[1]=SligWolf's Minitrains
@ -47,16 +52,20 @@ set emd_chew_adddir[4]=SProps
set emd_chew_adddir[5]=Magnum's Rails
set emd_chew_adddir[6]=Shinji85's Rails
set emd_chew_adddir[7]=SligWolf's Railcar
set emd_chew_adddir[8]=StephenTechno's Buildings
set emd_chew_adddir[8]=StevenTechno's Buildings 1.0
set emd_chew_adddir[9]=Mr.Train's M-Gauge
set emd_chew_adddir[10]=G Scale Track Pack
set emd_chew_adddir[11]=Ron's Minitrain Props
set emd_chew_adddir[12]=Battleship's abandoned rails
set emd_chew_adddir[13]=AlexCookie's 2ft track pack
set emd_chew_adddir[14]=Joe's track pack
set emd_chew_adddir[15]=StevenTechno's Buildings 2.0
set emd_chew_adddir[16]=Trackmania United Props
:: AUTOMATIC STUFF ::
echo Running in: %emd_chew_pathb%
:: Output file for models list
set emd_chew_modls=models_list
set emd_clog_lfile=system_log
@ -69,8 +78,8 @@ del %emd_chew_pathb%%emd_clog_lfile%.txt
for /L %%k in (1,1,%emd_chew_addcnt%) do (
cd %emd_chew_pathb%
rd /S /Q "!emd_chew_adddir[%%k]!"
call %emd_chew_binloc%\gmad.exe extract -file "%emd_chew_addon%\!emd_chew_addlst[%%k]!.gma" -out "%emd_chew_pathb%!emd_chew_adddir[%%k]!"
echo [%%k]!emd_chew_adddir[%%k]! >> %emd_clog_lfile%.txt
call %emd_chew_binloc%\gmad.exe extract -file "%emd_chew_addon%\!emd_chew_addlst[%%k]!.gma" -out "%emd_chew_pathb%!emd_chew_adddir[%%k]!" >> %emd_clog_lfile%.txt
echo [%%k]!emd_chew_adddir[%%k]! @ %TIME%
)
:: Get all the model files in the current directory

View File

@ -29,13 +29,14 @@ int onExit(int errID, const char * const errFormat)
int main(int argc, char **argv)
// int main(void)
{
/* Only for test !
/* Only for test ! */
/*
int argc = 5;
char argv[6][500];
strcpy(argv[0], "chewpath.exe");
strcpy(argv[1], "E:\\Documents\\CodeBlocks-Projs\\chewpath\\bin\\Debug\\");
strcpy(argv[2], "E:\\Documents\\Lua-Projs\\SVN\\TrackAssemblyTool_GIT_master\\lua\\autorun\\trackassembly_init.lua");
strcpy(argv[3], "E:\\Documents\\Lua-Projs\\SVN\\TrackAssemblyTool_GIT_master\\data\\peaces_manager\\models_ignored.txt");
char argv[5][500];
strcpy(argv[0], "O:\\Documents\\CodeBlocks-Projs\\peaces_manager\\bin\\peaces_manager.exe");
strcpy(argv[1], "O:\\Documents\\CodeBlocks-Projs\\peaces_manager\\bin\\");
strcpy(argv[2], "F:\\Games\\Steam\\steamapps\\common\\GarrysMod\\garrysmod\\data\\trackassembly\\trackasmlib_db.txt");
strcpy(argv[3], "F:\\Games\\Steam\\steamapps\\common\\GarrysMod\\garrysmod\\addons\\TrackAssemblyTool_GIT\\data\\peaces_manager\\models_ignored.txt");
strcpy(argv[4], "system_log");
*/
stentry::cEntryStack Ignored;
@ -43,8 +44,7 @@ int main(int argc, char **argv)
stmatch::cMatchStack Matches;
stmatch::stMatch *Match, *cuMch;
stentry::stEntry *enAd;
unsigned char F;
char *S, *E, *F1, *F2, *F3, *adNode;
char *S, *E, *F, *adNode;
char resPath [MAX_PATH_LENGTH] = {0};
char dbsPath [MAX_PATH_LENGTH] = {0};
char addName [MAX_PATH_LENGTH] = {0};
@ -52,7 +52,7 @@ int main(int argc, char **argv)
char fName [MAX_PATH_LENGTH] = {0};
char cpBoom [MAX_PATH_LENGTH] = {0};
char **arList = NULL;
SSTACK_TYPE_INDEX tiCnt = 0, uLen = 0, ID, iDb, iAd;
SSTACK_TYPE_INDEX tiCnt = 0, uLen = 0, ID, iDb, iAd;
SSTACK_TYPE_ERROR teErr = 0; /// No error
if(argc < 3)
@ -168,15 +168,11 @@ int main(int argc, char **argv)
common::logSystem(L,"Match created: <%s>",Match->Name);
rewind(D); // Reset the stream to search for data
while(fgets(dbsPath,MAX_PATH_LENGTH,D))
{ /// For every line in the DB
{ /// For every line in the DB extract one model
common::swapSlash(common::trimAll(dbsPath));
uLen = strlen(dbsPath);
F1 = strstr(dbsPath,MATCH_START_NEW_TYPE);
F2 = strstr(dbsPath,Match->Name);
F3 = strstr(dbsPath,MATCH_CLOSE_LUA); /// Closing the IF statement in LUA
if(!F && F1 != NULL && F2 != NULL){ F = 1; }
if( F && (F1 != NULL || (F3 != NULL && uLen == 3)) && F2 == NULL ){ F = 0; }
if(F)
F = strstr(dbsPath,Match->Name);
if(F != NULL)
{ common::logSystem(L,"DB Read: <%s>",dbsPath);
S = strstr(dbsPath,MATCH_MODEL_DIR);
if(S != NULL)

View File

@ -4104,6 +4104,712 @@ models/sprops/triangles_thin/right/size_4/t_rtri_48x78.mdl
models/sprops/triangles_thin/right/size_4/t_rtri_48x84.mdl
models/sprops/triangles_thin/right/size_4/t_rtri_48x90.mdl
models/sprops/triangles_thin/right/size_4/t_rtri_48x96.mdl
models/sprops/misc/bone_from_x.mdl
models/sprops/misc/bone_from_y.mdl
models/sprops/misc/bone_from_z.mdl
models/sprops/misc/tubes_superthin/size_1/htube_0_5.mdl
models/sprops/misc/tubes_superthin/size_1/htube_12.mdl
models/sprops/misc/tubes_superthin/size_1/htube_18.mdl
models/sprops/misc/tubes_superthin/size_1/htube_1_5.mdl
models/sprops/misc/tubes_superthin/size_1/htube_24.mdl
models/sprops/misc/tubes_superthin/size_1/htube_3.mdl
models/sprops/misc/tubes_superthin/size_1/htube_30.mdl
models/sprops/misc/tubes_superthin/size_1/htube_36.mdl
models/sprops/misc/tubes_superthin/size_1/htube_42.mdl
models/sprops/misc/tubes_superthin/size_1/htube_48.mdl
models/sprops/misc/tubes_superthin/size_1/htube_54.mdl
models/sprops/misc/tubes_superthin/size_1/htube_6.mdl
models/sprops/misc/tubes_superthin/size_1/htube_60.mdl
models/sprops/misc/tubes_superthin/size_1/htube_66.mdl
models/sprops/misc/tubes_superthin/size_1/htube_72.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_0_5.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_12.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_18.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_1_5.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_24.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_3.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_30.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_36.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_42.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_48.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_54.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_6.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_60.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_66.mdl
models/sprops/misc/tubes_superthin/size_1/qtube_72.mdl
models/sprops/misc/tubes_superthin/size_1/tube_0_5.mdl
models/sprops/misc/tubes_superthin/size_1/tube_12.mdl
models/sprops/misc/tubes_superthin/size_1/tube_18.mdl
models/sprops/misc/tubes_superthin/size_1/tube_1_5.mdl
models/sprops/misc/tubes_superthin/size_1/tube_24.mdl
models/sprops/misc/tubes_superthin/size_1/tube_3.mdl
models/sprops/misc/tubes_superthin/size_1/tube_30.mdl
models/sprops/misc/tubes_superthin/size_1/tube_36.mdl
models/sprops/misc/tubes_superthin/size_1/tube_42.mdl
models/sprops/misc/tubes_superthin/size_1/tube_48.mdl
models/sprops/misc/tubes_superthin/size_1/tube_54.mdl
models/sprops/misc/tubes_superthin/size_1/tube_6.mdl
models/sprops/misc/tubes_superthin/size_1/tube_60.mdl
models/sprops/misc/tubes_superthin/size_1/tube_66.mdl
models/sprops/misc/tubes_superthin/size_1/tube_72.mdl
models/sprops/misc/tubes_superthin/size_2/htube_0_5.mdl
models/sprops/misc/tubes_superthin/size_2/htube_12.mdl
models/sprops/misc/tubes_superthin/size_2/htube_18.mdl
models/sprops/misc/tubes_superthin/size_2/htube_1_5.mdl
models/sprops/misc/tubes_superthin/size_2/htube_24.mdl
models/sprops/misc/tubes_superthin/size_2/htube_3.mdl
models/sprops/misc/tubes_superthin/size_2/htube_30.mdl
models/sprops/misc/tubes_superthin/size_2/htube_36.mdl
models/sprops/misc/tubes_superthin/size_2/htube_42.mdl
models/sprops/misc/tubes_superthin/size_2/htube_48.mdl
models/sprops/misc/tubes_superthin/size_2/htube_54.mdl
models/sprops/misc/tubes_superthin/size_2/htube_6.mdl
models/sprops/misc/tubes_superthin/size_2/htube_60.mdl
models/sprops/misc/tubes_superthin/size_2/htube_66.mdl
models/sprops/misc/tubes_superthin/size_2/htube_72.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_0_5.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_12.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_18.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_1_5.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_24.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_3.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_30.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_36.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_42.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_48.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_54.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_6.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_60.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_66.mdl
models/sprops/misc/tubes_superthin/size_2/qtube_72.mdl
models/sprops/misc/tubes_superthin/size_2/tube_0_5.mdl
models/sprops/misc/tubes_superthin/size_2/tube_12.mdl
models/sprops/misc/tubes_superthin/size_2/tube_18.mdl
models/sprops/misc/tubes_superthin/size_2/tube_1_5.mdl
models/sprops/misc/tubes_superthin/size_2/tube_24.mdl
models/sprops/misc/tubes_superthin/size_2/tube_3.mdl
models/sprops/misc/tubes_superthin/size_2/tube_30.mdl
models/sprops/misc/tubes_superthin/size_2/tube_36.mdl
models/sprops/misc/tubes_superthin/size_2/tube_42.mdl
models/sprops/misc/tubes_superthin/size_2/tube_48.mdl
models/sprops/misc/tubes_superthin/size_2/tube_54.mdl
models/sprops/misc/tubes_superthin/size_2/tube_6.mdl
models/sprops/misc/tubes_superthin/size_2/tube_60.mdl
models/sprops/misc/tubes_superthin/size_2/tube_66.mdl
models/sprops/misc/tubes_superthin/size_2/tube_72.mdl
models/sprops/misc/tubes_superthin/size_3/htube_0_5.mdl
models/sprops/misc/tubes_superthin/size_3/htube_12.mdl
models/sprops/misc/tubes_superthin/size_3/htube_18.mdl
models/sprops/misc/tubes_superthin/size_3/htube_1_5.mdl
models/sprops/misc/tubes_superthin/size_3/htube_24.mdl
models/sprops/misc/tubes_superthin/size_3/htube_3.mdl
models/sprops/misc/tubes_superthin/size_3/htube_30.mdl
models/sprops/misc/tubes_superthin/size_3/htube_36.mdl
models/sprops/misc/tubes_superthin/size_3/htube_42.mdl
models/sprops/misc/tubes_superthin/size_3/htube_48.mdl
models/sprops/misc/tubes_superthin/size_3/htube_54.mdl
models/sprops/misc/tubes_superthin/size_3/htube_6.mdl
models/sprops/misc/tubes_superthin/size_3/htube_60.mdl
models/sprops/misc/tubes_superthin/size_3/htube_66.mdl
models/sprops/misc/tubes_superthin/size_3/htube_72.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_0_5.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_12.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_18.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_1_5.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_24.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_3.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_30.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_36.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_42.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_48.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_54.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_6.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_60.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_66.mdl
models/sprops/misc/tubes_superthin/size_3/qtube_72.mdl
models/sprops/misc/tubes_superthin/size_3/tube_0_5.mdl
models/sprops/misc/tubes_superthin/size_3/tube_12.mdl
models/sprops/misc/tubes_superthin/size_3/tube_18.mdl
models/sprops/misc/tubes_superthin/size_3/tube_1_5.mdl
models/sprops/misc/tubes_superthin/size_3/tube_24.mdl
models/sprops/misc/tubes_superthin/size_3/tube_3.mdl
models/sprops/misc/tubes_superthin/size_3/tube_30.mdl
models/sprops/misc/tubes_superthin/size_3/tube_36.mdl
models/sprops/misc/tubes_superthin/size_3/tube_42.mdl
models/sprops/misc/tubes_superthin/size_3/tube_48.mdl
models/sprops/misc/tubes_superthin/size_3/tube_54.mdl
models/sprops/misc/tubes_superthin/size_3/tube_6.mdl
models/sprops/misc/tubes_superthin/size_3/tube_60.mdl
models/sprops/misc/tubes_superthin/size_3/tube_66.mdl
models/sprops/misc/tubes_superthin/size_3/tube_72.mdl
models/sprops/misc/tubes_superthin/size_4/htube_0_5.mdl
models/sprops/misc/tubes_superthin/size_4/htube_12.mdl
models/sprops/misc/tubes_superthin/size_4/htube_18.mdl
models/sprops/misc/tubes_superthin/size_4/htube_1_5.mdl
models/sprops/misc/tubes_superthin/size_4/htube_24.mdl
models/sprops/misc/tubes_superthin/size_4/htube_3.mdl
models/sprops/misc/tubes_superthin/size_4/htube_30.mdl
models/sprops/misc/tubes_superthin/size_4/htube_36.mdl
models/sprops/misc/tubes_superthin/size_4/htube_42.mdl
models/sprops/misc/tubes_superthin/size_4/htube_48.mdl
models/sprops/misc/tubes_superthin/size_4/htube_54.mdl
models/sprops/misc/tubes_superthin/size_4/htube_6.mdl
models/sprops/misc/tubes_superthin/size_4/htube_60.mdl
models/sprops/misc/tubes_superthin/size_4/htube_66.mdl
models/sprops/misc/tubes_superthin/size_4/htube_72.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_0_5.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_12.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_18.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_1_5.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_24.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_3.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_30.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_36.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_42.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_48.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_54.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_6.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_60.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_66.mdl
models/sprops/misc/tubes_superthin/size_4/qtube_72.mdl
models/sprops/misc/tubes_superthin/size_4/tube_0_5.mdl
models/sprops/misc/tubes_superthin/size_4/tube_12.mdl
models/sprops/misc/tubes_superthin/size_4/tube_18.mdl
models/sprops/misc/tubes_superthin/size_4/tube_1_5.mdl
models/sprops/misc/tubes_superthin/size_4/tube_24.mdl
models/sprops/misc/tubes_superthin/size_4/tube_3.mdl
models/sprops/misc/tubes_superthin/size_4/tube_30.mdl
models/sprops/misc/tubes_superthin/size_4/tube_36.mdl
models/sprops/misc/tubes_superthin/size_4/tube_42.mdl
models/sprops/misc/tubes_superthin/size_4/tube_48.mdl
models/sprops/misc/tubes_superthin/size_4/tube_54.mdl
models/sprops/misc/tubes_superthin/size_4/tube_6.mdl
models/sprops/misc/tubes_superthin/size_4/tube_60.mdl
models/sprops/misc/tubes_superthin/size_4/tube_66.mdl
models/sprops/misc/tubes_superthin/size_4/tube_72.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x108.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x12.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x120.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x132.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x144.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x18.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x192.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x24.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x240.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x288.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x30.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x336.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x36.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x384.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x42.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x432.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x48.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x480.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x54.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x6.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x60.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x66.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x72.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x78.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x84.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x90.mdl
models/sprops/rectangles_superthin/size_0/rect_1_5x96.mdl
models/sprops/rectangles_superthin/size_1/rect_3x108.mdl
models/sprops/rectangles_superthin/size_1/rect_3x12.mdl
models/sprops/rectangles_superthin/size_1/rect_3x120.mdl
models/sprops/rectangles_superthin/size_1/rect_3x132.mdl
models/sprops/rectangles_superthin/size_1/rect_3x144.mdl
models/sprops/rectangles_superthin/size_1/rect_3x18.mdl
models/sprops/rectangles_superthin/size_1/rect_3x192.mdl
models/sprops/rectangles_superthin/size_1/rect_3x24.mdl
models/sprops/rectangles_superthin/size_1/rect_3x240.mdl
models/sprops/rectangles_superthin/size_1/rect_3x288.mdl
models/sprops/rectangles_superthin/size_1/rect_3x3.mdl
models/sprops/rectangles_superthin/size_1/rect_3x30.mdl
models/sprops/rectangles_superthin/size_1/rect_3x336.mdl
models/sprops/rectangles_superthin/size_1/rect_3x36.mdl
models/sprops/rectangles_superthin/size_1/rect_3x384.mdl
models/sprops/rectangles_superthin/size_1/rect_3x42.mdl
models/sprops/rectangles_superthin/size_1/rect_3x432.mdl
models/sprops/rectangles_superthin/size_1/rect_3x48.mdl
models/sprops/rectangles_superthin/size_1/rect_3x480.mdl
models/sprops/rectangles_superthin/size_1/rect_3x54.mdl
models/sprops/rectangles_superthin/size_1/rect_3x6.mdl
models/sprops/rectangles_superthin/size_1/rect_3x60.mdl
models/sprops/rectangles_superthin/size_1/rect_3x66.mdl
models/sprops/rectangles_superthin/size_1/rect_3x72.mdl
models/sprops/rectangles_superthin/size_1/rect_3x78.mdl
models/sprops/rectangles_superthin/size_1/rect_3x84.mdl
models/sprops/rectangles_superthin/size_1/rect_3x90.mdl
models/sprops/rectangles_superthin/size_1/rect_3x96.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x108.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x12.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x120.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x132.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x144.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x18.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x192.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x24.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x240.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x288.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x30.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x336.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x36.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x384.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x42.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x432.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x48.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x480.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x54.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x6.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x60.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x66.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x72.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x78.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x84.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x90.mdl
models/sprops/rectangles_superthin/size_1_5/rect_6x96.mdl
models/sprops/rectangles_superthin/size_2/rect_12x108.mdl
models/sprops/rectangles_superthin/size_2/rect_12x12.mdl
models/sprops/rectangles_superthin/size_2/rect_12x120.mdl
models/sprops/rectangles_superthin/size_2/rect_12x132.mdl
models/sprops/rectangles_superthin/size_2/rect_12x144.mdl
models/sprops/rectangles_superthin/size_2/rect_12x18.mdl
models/sprops/rectangles_superthin/size_2/rect_12x192.mdl
models/sprops/rectangles_superthin/size_2/rect_12x24.mdl
models/sprops/rectangles_superthin/size_2/rect_12x240.mdl
models/sprops/rectangles_superthin/size_2/rect_12x288.mdl
models/sprops/rectangles_superthin/size_2/rect_12x30.mdl
models/sprops/rectangles_superthin/size_2/rect_12x336.mdl
models/sprops/rectangles_superthin/size_2/rect_12x36.mdl
models/sprops/rectangles_superthin/size_2/rect_12x384.mdl
models/sprops/rectangles_superthin/size_2/rect_12x42.mdl
models/sprops/rectangles_superthin/size_2/rect_12x432.mdl
models/sprops/rectangles_superthin/size_2/rect_12x48.mdl
models/sprops/rectangles_superthin/size_2/rect_12x480.mdl
models/sprops/rectangles_superthin/size_2/rect_12x54.mdl
models/sprops/rectangles_superthin/size_2/rect_12x60.mdl
models/sprops/rectangles_superthin/size_2/rect_12x66.mdl
models/sprops/rectangles_superthin/size_2/rect_12x72.mdl
models/sprops/rectangles_superthin/size_2/rect_12x78.mdl
models/sprops/rectangles_superthin/size_2/rect_12x84.mdl
models/sprops/rectangles_superthin/size_2/rect_12x90.mdl
models/sprops/rectangles_superthin/size_2/rect_12x96.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x108.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x120.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x132.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x144.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x18.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x192.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x24.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x240.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x288.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x30.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x336.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x36.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x384.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x42.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x432.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x48.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x480.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x54.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x60.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x66.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x72.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x78.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x84.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x90.mdl
models/sprops/rectangles_superthin/size_2_5/rect_18x96.mdl
models/sprops/rectangles_superthin/size_3/rect_24x108.mdl
models/sprops/rectangles_superthin/size_3/rect_24x120.mdl
models/sprops/rectangles_superthin/size_3/rect_24x132.mdl
models/sprops/rectangles_superthin/size_3/rect_24x144.mdl
models/sprops/rectangles_superthin/size_3/rect_24x192.mdl
models/sprops/rectangles_superthin/size_3/rect_24x24.mdl
models/sprops/rectangles_superthin/size_3/rect_24x240.mdl
models/sprops/rectangles_superthin/size_3/rect_24x288.mdl
models/sprops/rectangles_superthin/size_3/rect_24x30.mdl
models/sprops/rectangles_superthin/size_3/rect_24x336.mdl
models/sprops/rectangles_superthin/size_3/rect_24x36.mdl
models/sprops/rectangles_superthin/size_3/rect_24x384.mdl
models/sprops/rectangles_superthin/size_3/rect_24x42.mdl
models/sprops/rectangles_superthin/size_3/rect_24x432.mdl
models/sprops/rectangles_superthin/size_3/rect_24x48.mdl
models/sprops/rectangles_superthin/size_3/rect_24x480.mdl
models/sprops/rectangles_superthin/size_3/rect_24x54.mdl
models/sprops/rectangles_superthin/size_3/rect_24x60.mdl
models/sprops/rectangles_superthin/size_3/rect_24x66.mdl
models/sprops/rectangles_superthin/size_3/rect_24x72.mdl
models/sprops/rectangles_superthin/size_3/rect_24x78.mdl
models/sprops/rectangles_superthin/size_3/rect_24x84.mdl
models/sprops/rectangles_superthin/size_3/rect_24x90.mdl
models/sprops/rectangles_superthin/size_3/rect_24x96.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x108.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x120.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x132.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x144.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x192.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x240.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x288.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x30.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x336.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x36.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x384.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x42.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x432.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x48.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x480.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x54.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x60.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x66.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x72.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x78.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x84.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x90.mdl
models/sprops/rectangles_superthin/size_3_5/rect_30x96.mdl
models/sprops/rectangles_superthin/size_4/rect_36x108.mdl
models/sprops/rectangles_superthin/size_4/rect_36x120.mdl
models/sprops/rectangles_superthin/size_4/rect_36x132.mdl
models/sprops/rectangles_superthin/size_4/rect_36x144.mdl
models/sprops/rectangles_superthin/size_4/rect_36x192.mdl
models/sprops/rectangles_superthin/size_4/rect_36x240.mdl
models/sprops/rectangles_superthin/size_4/rect_36x288.mdl
models/sprops/rectangles_superthin/size_4/rect_36x336.mdl
models/sprops/rectangles_superthin/size_4/rect_36x36.mdl
models/sprops/rectangles_superthin/size_4/rect_36x384.mdl
models/sprops/rectangles_superthin/size_4/rect_36x42.mdl
models/sprops/rectangles_superthin/size_4/rect_36x432.mdl
models/sprops/rectangles_superthin/size_4/rect_36x48.mdl
models/sprops/rectangles_superthin/size_4/rect_36x480.mdl
models/sprops/rectangles_superthin/size_4/rect_36x54.mdl
models/sprops/rectangles_superthin/size_4/rect_36x60.mdl
models/sprops/rectangles_superthin/size_4/rect_36x66.mdl
models/sprops/rectangles_superthin/size_4/rect_36x72.mdl
models/sprops/rectangles_superthin/size_4/rect_36x78.mdl
models/sprops/rectangles_superthin/size_4/rect_36x84.mdl
models/sprops/rectangles_superthin/size_4/rect_36x90.mdl
models/sprops/rectangles_superthin/size_4/rect_36x96.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x108.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x120.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x132.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x144.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x192.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x240.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x288.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x336.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x384.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x42.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x432.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x48.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x480.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x54.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x60.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x66.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x72.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x78.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x84.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x90.mdl
models/sprops/rectangles_superthin/size_4_5/rect_42x96.mdl
models/sprops/rectangles_superthin/size_5/rect_48x108.mdl
models/sprops/rectangles_superthin/size_5/rect_48x120.mdl
models/sprops/rectangles_superthin/size_5/rect_48x132.mdl
models/sprops/rectangles_superthin/size_5/rect_48x144.mdl
models/sprops/rectangles_superthin/size_5/rect_48x192.mdl
models/sprops/rectangles_superthin/size_5/rect_48x240.mdl
models/sprops/rectangles_superthin/size_5/rect_48x288.mdl
models/sprops/rectangles_superthin/size_5/rect_48x336.mdl
models/sprops/rectangles_superthin/size_5/rect_48x384.mdl
models/sprops/rectangles_superthin/size_5/rect_48x432.mdl
models/sprops/rectangles_superthin/size_5/rect_48x48.mdl
models/sprops/rectangles_superthin/size_5/rect_48x480.mdl
models/sprops/rectangles_superthin/size_5/rect_48x54.mdl
models/sprops/rectangles_superthin/size_5/rect_48x60.mdl
models/sprops/rectangles_superthin/size_5/rect_48x66.mdl
models/sprops/rectangles_superthin/size_5/rect_48x72.mdl
models/sprops/rectangles_superthin/size_5/rect_48x78.mdl
models/sprops/rectangles_superthin/size_5/rect_48x84.mdl
models/sprops/rectangles_superthin/size_5/rect_48x90.mdl
models/sprops/rectangles_superthin/size_5/rect_48x96.mdl
models/sprops/rectangles_superthin/size_54/rect_54x108.mdl
models/sprops/rectangles_superthin/size_54/rect_54x120.mdl
models/sprops/rectangles_superthin/size_54/rect_54x132.mdl
models/sprops/rectangles_superthin/size_54/rect_54x144.mdl
models/sprops/rectangles_superthin/size_54/rect_54x192.mdl
models/sprops/rectangles_superthin/size_54/rect_54x240.mdl
models/sprops/rectangles_superthin/size_54/rect_54x288.mdl
models/sprops/rectangles_superthin/size_54/rect_54x336.mdl
models/sprops/rectangles_superthin/size_54/rect_54x384.mdl
models/sprops/rectangles_superthin/size_54/rect_54x432.mdl
models/sprops/rectangles_superthin/size_54/rect_54x480.mdl
models/sprops/rectangles_superthin/size_54/rect_54x54.mdl
models/sprops/rectangles_superthin/size_54/rect_54x60.mdl
models/sprops/rectangles_superthin/size_54/rect_54x66.mdl
models/sprops/rectangles_superthin/size_54/rect_54x72.mdl
models/sprops/rectangles_superthin/size_54/rect_54x78.mdl
models/sprops/rectangles_superthin/size_54/rect_54x84.mdl
models/sprops/rectangles_superthin/size_54/rect_54x90.mdl
models/sprops/rectangles_superthin/size_54/rect_54x96.mdl
models/sprops/rectangles_superthin/size_6/rect_96x108.mdl
models/sprops/rectangles_superthin/size_6/rect_96x120.mdl
models/sprops/rectangles_superthin/size_6/rect_96x132.mdl
models/sprops/rectangles_superthin/size_6/rect_96x144.mdl
models/sprops/rectangles_superthin/size_6/rect_96x192.mdl
models/sprops/rectangles_superthin/size_6/rect_96x240.mdl
models/sprops/rectangles_superthin/size_6/rect_96x288.mdl
models/sprops/rectangles_superthin/size_6/rect_96x336.mdl
models/sprops/rectangles_superthin/size_6/rect_96x384.mdl
models/sprops/rectangles_superthin/size_6/rect_96x432.mdl
models/sprops/rectangles_superthin/size_6/rect_96x480.mdl
models/sprops/rectangles_superthin/size_6/rect_96x60.mdl
models/sprops/rectangles_superthin/size_6/rect_96x72.mdl
models/sprops/rectangles_superthin/size_6/rect_96x84.mdl
models/sprops/rectangles_superthin/size_6/rect_96x96.mdl
models/sprops/rectangles_superthin/size_60/rect_60x108.mdl
models/sprops/rectangles_superthin/size_60/rect_60x120.mdl
models/sprops/rectangles_superthin/size_60/rect_60x132.mdl
models/sprops/rectangles_superthin/size_60/rect_60x144.mdl
models/sprops/rectangles_superthin/size_60/rect_60x192.mdl
models/sprops/rectangles_superthin/size_60/rect_60x240.mdl
models/sprops/rectangles_superthin/size_60/rect_60x288.mdl
models/sprops/rectangles_superthin/size_60/rect_60x336.mdl
models/sprops/rectangles_superthin/size_60/rect_60x384.mdl
models/sprops/rectangles_superthin/size_60/rect_60x432.mdl
models/sprops/rectangles_superthin/size_60/rect_60x480.mdl
models/sprops/rectangles_superthin/size_60/rect_60x60.mdl
models/sprops/rectangles_superthin/size_60/rect_60x66.mdl
models/sprops/rectangles_superthin/size_60/rect_60x72.mdl
models/sprops/rectangles_superthin/size_60/rect_60x78.mdl
models/sprops/rectangles_superthin/size_60/rect_60x84.mdl
models/sprops/rectangles_superthin/size_60/rect_60x90.mdl
models/sprops/rectangles_superthin/size_60/rect_60x96.mdl
models/sprops/rectangles_superthin/size_66/rect_66x108.mdl
models/sprops/rectangles_superthin/size_66/rect_66x120.mdl
models/sprops/rectangles_superthin/size_66/rect_66x132.mdl
models/sprops/rectangles_superthin/size_66/rect_66x144.mdl
models/sprops/rectangles_superthin/size_66/rect_66x192.mdl
models/sprops/rectangles_superthin/size_66/rect_66x240.mdl
models/sprops/rectangles_superthin/size_66/rect_66x288.mdl
models/sprops/rectangles_superthin/size_66/rect_66x336.mdl
models/sprops/rectangles_superthin/size_66/rect_66x384.mdl
models/sprops/rectangles_superthin/size_66/rect_66x432.mdl
models/sprops/rectangles_superthin/size_66/rect_66x480.mdl
models/sprops/rectangles_superthin/size_66/rect_66x66.mdl
models/sprops/rectangles_superthin/size_66/rect_66x72.mdl
models/sprops/rectangles_superthin/size_66/rect_66x78.mdl
models/sprops/rectangles_superthin/size_66/rect_66x84.mdl
models/sprops/rectangles_superthin/size_66/rect_66x90.mdl
models/sprops/rectangles_superthin/size_66/rect_66x96.mdl
models/sprops/rectangles_superthin/size_72/rect_72x108.mdl
models/sprops/rectangles_superthin/size_72/rect_72x120.mdl
models/sprops/rectangles_superthin/size_72/rect_72x132.mdl
models/sprops/rectangles_superthin/size_72/rect_72x144.mdl
models/sprops/rectangles_superthin/size_72/rect_72x192.mdl
models/sprops/rectangles_superthin/size_72/rect_72x240.mdl
models/sprops/rectangles_superthin/size_72/rect_72x288.mdl
models/sprops/rectangles_superthin/size_72/rect_72x336.mdl
models/sprops/rectangles_superthin/size_72/rect_72x384.mdl
models/sprops/rectangles_superthin/size_72/rect_72x432.mdl
models/sprops/rectangles_superthin/size_72/rect_72x480.mdl
models/sprops/rectangles_superthin/size_72/rect_72x72.mdl
models/sprops/rectangles_superthin/size_72/rect_72x78.mdl
models/sprops/rectangles_superthin/size_72/rect_72x84.mdl
models/sprops/rectangles_superthin/size_72/rect_72x90.mdl
models/sprops/rectangles_superthin/size_72/rect_72x96.mdl
models/sprops/rectangles_superthin/size_78/rect_78x108.mdl
models/sprops/rectangles_superthin/size_78/rect_78x120.mdl
models/sprops/rectangles_superthin/size_78/rect_78x132.mdl
models/sprops/rectangles_superthin/size_78/rect_78x144.mdl
models/sprops/rectangles_superthin/size_78/rect_78x192.mdl
models/sprops/rectangles_superthin/size_78/rect_78x240.mdl
models/sprops/rectangles_superthin/size_78/rect_78x288.mdl
models/sprops/rectangles_superthin/size_78/rect_78x336.mdl
models/sprops/rectangles_superthin/size_78/rect_78x384.mdl
models/sprops/rectangles_superthin/size_78/rect_78x432.mdl
models/sprops/rectangles_superthin/size_78/rect_78x480.mdl
models/sprops/rectangles_superthin/size_78/rect_78x78.mdl
models/sprops/rectangles_superthin/size_78/rect_78x84.mdl
models/sprops/rectangles_superthin/size_78/rect_78x90.mdl
models/sprops/rectangles_superthin/size_78/rect_78x96.mdl
models/sprops/rectangles_superthin/size_84/rect_84x108.mdl
models/sprops/rectangles_superthin/size_84/rect_84x120.mdl
models/sprops/rectangles_superthin/size_84/rect_84x132.mdl
models/sprops/rectangles_superthin/size_84/rect_84x144.mdl
models/sprops/rectangles_superthin/size_84/rect_84x192.mdl
models/sprops/rectangles_superthin/size_84/rect_84x240.mdl
models/sprops/rectangles_superthin/size_84/rect_84x288.mdl
models/sprops/rectangles_superthin/size_84/rect_84x336.mdl
models/sprops/rectangles_superthin/size_84/rect_84x384.mdl
models/sprops/rectangles_superthin/size_84/rect_84x432.mdl
models/sprops/rectangles_superthin/size_84/rect_84x480.mdl
models/sprops/rectangles_superthin/size_84/rect_84x84.mdl
models/sprops/rectangles_superthin/size_84/rect_84x90.mdl
models/sprops/rectangles_superthin/size_84/rect_84x96.mdl
models/sprops/rectangles_superthin/size_90/rect_90x108.mdl
models/sprops/rectangles_superthin/size_90/rect_90x120.mdl
models/sprops/rectangles_superthin/size_90/rect_90x132.mdl
models/sprops/rectangles_superthin/size_90/rect_90x144.mdl
models/sprops/rectangles_superthin/size_90/rect_90x192.mdl
models/sprops/rectangles_superthin/size_90/rect_90x240.mdl
models/sprops/rectangles_superthin/size_90/rect_90x288.mdl
models/sprops/rectangles_superthin/size_90/rect_90x336.mdl
models/sprops/rectangles_superthin/size_90/rect_90x384.mdl
models/sprops/rectangles_superthin/size_90/rect_90x432.mdl
models/sprops/rectangles_superthin/size_90/rect_90x480.mdl
models/sprops/rectangles_superthin/size_90/rect_90x90.mdl
models/sprops/rectangles_superthin/size_90/rect_90x96.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x108.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x12.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x120.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x132.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x144.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x18.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x24.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x3.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x30.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x36.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x42.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x48.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x54.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x6.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x60.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x66.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x72.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x78.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x84.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x90.mdl
models/sprops/triangles_superthin/right/size_0/st_rtri_3x96.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x108.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x12.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x120.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x132.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x144.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x18.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x24.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x30.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x36.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x42.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x48.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x54.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x6.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x60.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x66.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x72.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x78.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x84.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x90.mdl
models/sprops/triangles_superthin/right/size_0_5/st_rtri_6x96.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x108.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x12.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x120.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x132.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x144.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x18.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x24.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x30.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x36.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x42.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x48.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x54.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x60.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x66.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x72.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x78.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x84.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x90.mdl
models/sprops/triangles_superthin/right/size_1/st_rtri_12x96.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x108.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x120.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x132.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x144.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x18.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x24.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x30.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x36.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x42.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x48.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x54.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x60.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x66.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x72.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x78.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x84.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x90.mdl
models/sprops/triangles_superthin/right/size_1_5/st_rtri_18x96.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x108.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x120.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x132.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x144.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x24.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x30.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x36.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x42.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x48.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x54.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x60.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x66.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x72.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x78.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x84.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x90.mdl
models/sprops/triangles_superthin/right/size_2/st_rtri_24x96.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x108.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x120.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x132.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x144.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x30.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x36.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x42.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x48.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x54.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x60.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x66.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x72.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x78.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x84.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x90.mdl
models/sprops/triangles_superthin/right/size_2_5/st_rtri_30x96.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x108.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x120.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x132.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x144.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x36.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x42.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x48.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x54.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x60.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x66.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x72.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x78.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x84.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x90.mdl
models/sprops/triangles_superthin/right/size_3/st_rtri_36x96.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x108.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x120.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x132.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x144.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x42.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x48.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x54.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x60.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x66.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x72.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x78.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x84.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x90.mdl
models/sprops/triangles_superthin/right/size_3_5/st_rtri_42x96.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x108.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x120.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x132.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x144.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x48.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x54.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x60.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x66.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x72.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x78.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x84.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x90.mdl
models/sprops/triangles_superthin/right/size_4/st_rtri_48x96.mdl
# StephenTechno's Buildings
models/buildingspack/emptylots/lo64x32.mdl
@ -4166,4 +4872,183 @@ models/joe/props_promontory/store_1.mdl
models/joe/props_promontory/telegraph_pole.mdl
models/joe/props_promontory/tent_1.mdl
models/joe/props_promontory/tent_2.mdl
models/joe/props_promontory/tent_3.mdl
models/joe/props_promontory/tent_3.mdl
models/joe/jtp/straight/1024_225.mdl
models/joe/jtp/straight/1024_45.mdl
models/joe/jtp/curve/1536_225_left.mdl
models/joe/jtp/curve/1536_225_right.mdl
models/joe/jtp/curve/1536_45_left.mdl
models/joe/jtp/curve/1536_45_right.mdl
models/joe/jtp/curve/3072_45_left.mdl
models/joe/jtp/curve/3072_45_right.mdl
models/joe/jtp/straight/1024_225.mdl
models/joe/jtp/straight/1024_45.mdl
models/joe/jtp/straight/4096_64.mdl
models/joe/jtp/straight/512_45.mdl
models/joe/jtp/straight/96_225.mdl
# Branchwood Valley
models/animals/cow.mdl
models/buildings/big_house.mdl
models/buildings/brewery1.mdl
models/buildings/bridge.mdl
models/buildings/buildings_hotel1.mdl
models/buildings/building_6.mdl
models/buildings/building_cafe.mdl
models/buildings/building_church2.mdl
models/buildings/building_factory1.mdl
models/buildings/building_factory_2.mdl
models/buildings/building_store.mdl
models/buildings/building_store2.mdl
models/buildings/chapel.mdl
models/buildings/coal_mine.mdl
models/buildings/corner_store.mdl
models/buildings/corner_store_3.mdl
models/buildings/factory_3.mdl
models/buildings/freight_station.mdl
models/buildings/general_store.mdl
models/buildings/house1.mdl
models/buildings/house1_small.mdl
models/buildings/house2.mdl
models/buildings/house2_small.mdl
models/buildings/minecart.mdl
models/buildings/minetrack_long.mdl
models/buildings/mine_2ft.mdl
models/buildings/office_1.mdl
models/buildings/picklefactory1.mdl
models/buildings/plantation.mdl
models/buildings/quarry.mdl
models/buildings/roundhouse.mdl
models/buildings/roundhouse_funnels.mdl
models/buildings/row_building1.mdl
models/buildings/row_building2.mdl
models/buildings/row_building3.mdl
models/buildings/row_building4_jail.mdl
models/buildings/row_building_5_hotel.mdl
models/buildings/row_building_hotel_1.mdl
models/buildings/row_building_store.mdl
models/buildings/rr_watertower1.mdl
models/buildings/sign_1.mdl
models/buildings/steamshovel.mdl
models/buildings/steam_donkey.mdl
models/buildings/store_2.mdl
models/buildings/store_3.mdl
models/buildings/store_4.mdl
models/buildings/store_5.mdl
models/buildings/store_6.mdl
models/buildings/store_front.mdl
models/buildings/store_front_2.mdl
models/buildings/tannery.mdl
models/buildings/trestle.mdl
models/buildings/trestle_valley.mdl
models/buildings/turntable.mdl
models/buildings/valley_trestle.mdl
models/buildings/valley_trestle_2.mdl
models/buildings/village_hut.mdl
models/buildings/water_tower_2.mdl
models/facade_germany/bldg_comma_corner01.mdl
models/facade_germany/bldg_comma_facade.mdl
models/facade_germany/bldg_commb.mdl
models/facade_germany/bldg_commb_blues.mdl
models/facade_germany/bldg_commb_corner.mdl
models/facade_germany/bldg_commb_left.mdl
models/multigauge/exit_2ft.mdl
models/multigauge/exit_sg.mdl
models/multigauge/merge.mdl
models/multigauge/mergesg.mdl
models/multigauge/merge_sg.mdl
models/multigauge/ramp.mdl
models/props_foliage/tree_dry01.mdl
models/props_foliage/tree_dry02.mdl
models/props_foliage/tree_pine04.mdl
models/props_foliage/tree_pine05.mdl
models/props_foliage/tree_pine06.mdl
models/props_foliage/tree_pine_card_cluster_01.mdl
models/props_foliage/tree_pine_card_cluster_01_skybox.mdl
models/props_foliage/tree_pine_card_cluster_02.mdl
models/props_foliage/tree_pine_card_cluster_02_skybox.mdl
models/props_foliage/tree_pine_cluster_01.mdl
models/props_foliage/tree_pine_large.mdl
models/props_foliage/tree_pine_tall_cluster_01.mdl
models/props_joe/coal_unloader.mdl
# StephenTechno's Buildings 2.0
models/buildingspack2/public/2-0-1_car_garage_door.mdl
models/buildingspack2/public/2-4-1_gas_stop_door.mdl
models/buildingspack2/public/2-6-1_gun_shop_door.mdl
models/buildingspack2/public/2-7-1_bank_door_a.mdl
models/buildingspack2/public/2-7-2_bank_door_b.mdl
models/buildingspack2/public/2-9-1_school_house_door_l.mdl
models/buildingspack2/public/2-9-2_school_house_door_r.mdl
models/buildingspack2_nolot/housing/1-0_apartments.mdl
models/buildingspack2_nolot/housing/1-0_apartments_nodoors.mdl
models/buildingspack2_nolot/housing/1-2_apartments.mdl
models/buildingspack2_nolot/housing/1-2_apartments_nodoors.mdl
models/buildingspack2_nolot/housing/1-3_apartments.mdl
models/buildingspack2_nolot/housing/1-3_apartments_nodoors.mdl
models/buildingspack2_nolot/housing/1-4_apartments.mdl
models/buildingspack2_nolot/housing/1-4_apartments_nodoors.mdl
models/buildingspack2_nolot/public/2-0_car_garage.mdl
models/buildingspack2_nolot/public/2-0_car_garage_nodoors.mdl
models/buildingspack2_nolot/public/2-1_office_building.mdl
models/buildingspack2_nolot/public/2-1_office_building_nodoors.mdl
models/buildingspack2_nolot/public/2-2_lgbt_club_a.mdl
models/buildingspack2_nolot/public/2-2_lgbt_club_a_nodoors.mdl
models/buildingspack2_nolot/public/2-3_strip_club_a.mdl
models/buildingspack2_nolot/public/2-3_strip_club_a_nodoors.mdl
models/buildingspack2_nolot/public/2-4-2_gas_stop_awning.mdl
models/buildingspack2_nolot/public/2-4-3_gas_stop_sign.mdl
models/buildingspack2_nolot/public/2-4_gas_stop.mdl
models/buildingspack2_nolot/public/2-4_gas_stop_nolot_nodoors.mdl
models/buildingspack2_nolot/public/2-5_pc_shop.mdl
models/buildingspack2_nolot/public/2-5_pc_shop_nodoors.mdl
models/buildingspack2_nolot/public/2-6_gun_shop.mdl
models/buildingspack2_nolot/public/2-6_gun_shop_nodoors.mdl
models/buildingspack2_nolot/public/2-7_bank.mdl
models/buildingspack2_nolot/public/2-7_bank_nodoors.mdl
models/buildingspack2_nolot/public/2-9_school_house.mdl
models/buildingspack2_nolot/public/2-9_school_house_nodoors.mdl
models/buildingspack2_nolot/skyscraper/3-0_skyscraper_a.mdl
models/buildingspack2_nolot/skyscraper/3-1_skyscraper_b.mdl
models/buildingspack2_nolot/skyscraper/3-2_skyscraper_c.mdl
models/buildingspack2_nolot/skyscraper/3-3_skyscraper_d.mdl
models/buildingspack2_nolot/skyscraper/3-4_skyscraper_e.mdl
models/buildingspack2_nolot/housing/1-1_apartments.mdl
models/buildingspack2_nolot/housing/1-1_apartments_nodoors.mdl
models/buildingspack2_nolot/public/2-8_parking_garage.mdl
# Modular canals
models/props_d47_canals/floor_concrete_1024x1024.mdl
models/props_d47_canals/floor_concrete_1024x128.mdl
models/props_d47_canals/floor_concrete_1024x256.mdl
models/props_d47_canals/floor_concrete_1024x512.mdl
models/props_d47_canals/floor_concrete_1024x768.mdl
models/props_d47_canals/floor_concrete_128x128.mdl
models/props_d47_canals/floor_concrete_256x128.mdl
models/props_d47_canals/floor_concrete_256x256.mdl
models/props_d47_canals/floor_concrete_512x128.mdl
models/props_d47_canals/floor_concrete_512x256.mdl
models/props_d47_canals/floor_concrete_512x512.mdl
models/props_d47_canals/floor_concrete_768x256.mdl
models/props_d47_canals/floor_concrete_768x384.mdl
models/props_d47_canals/floor_concrete_768x512.mdl
models/props_d47_canals/floor_mud_1024x1024.mdl
models/props_d47_canals/floor_mud_1024x128.mdl
models/props_d47_canals/floor_mud_1024x256.mdl
models/props_d47_canals/floor_mud_1024x512.mdl
models/props_d47_canals/floor_mud_1024x768.mdl
models/props_d47_canals/floor_mud_128x128.mdl
models/props_d47_canals/floor_mud_256x128.mdl
models/props_d47_canals/floor_mud_256x256.mdl
models/props_d47_canals/floor_mud_512x128.mdl
models/props_d47_canals/floor_mud_512x256.mdl
models/props_d47_canals/floor_mud_512x512.mdl
models/props_d47_canals/floor_mud_768x256.mdl
models/props_d47_canals/floor_mud_768x384.mdl
models/props_d47_canals/floor_mud_768x512.mdl
models/props_d47_canals/interior_block_128x128.mdl
models/props_d47_canals/interior_block_256x128.mdl
models/props_d47_canals/interior_block_256x256.mdl
models/props_d47_canals/interior_block_512x128.mdl
models/props_d47_canals/interior_block_512x256.mdl
models/props_d47_canals/interior_block_512x512.mdl

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 289 KiB

View File

@ -1,98 +1,98 @@
# SynchronizeDSV:(Plarail@PIECES) 31-03-19 18:13:05 [ LUA ]
# Data settings:(MODEL TYPE NAME LINEID POINT ORIGIN ANGLE CLASS)
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r03_left.mdl "Plarail" "R-03 Curve Left 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r03_left.mdl "Plarail" "R-03 Curve Left 1" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r03_right.mdl "Plarail" "R-03 Curve Right 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r03_right.mdl "Plarail" "R-03 Curve Right 1" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_left.mdl "Plarail" "R-05 Curve Left Double" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_left.mdl "Plarail" "R-05 Curve Left Double" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_left.mdl "Plarail" "R-05 Curve Left Double" 3 "NULL" "48,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_left.mdl "Plarail" "R-05 Curve Left Double" 4 "NULL" "-3.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_right.mdl "Plarail" "R-05 Curve Right Double" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_right.mdl "Plarail" "R-05 Curve Right Double" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_right.mdl "Plarail" "R-05 Curve Right Double" 3 "NULL" "48,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r05_right.mdl "Plarail" "R-05 Curve Right Double" 4 "NULL" "-3.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r09_left.mdl "Plarail" "R-09 Curve Left 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r09_left.mdl "Plarail" "R-09 Curve Left 2" 2 "NULL" "-51.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r09_right.mdl "Plarail" "R-09 Curve Right 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r09_right.mdl "Plarail" "R-09 Curve Right 2" 2 "NULL" "-51.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r27_left.mdl "Plarail" "R-27 Curve Left Bridge" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r27_left.mdl "Plarail" "R-27 Curve Left Bridge" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r27_right.mdl "Plarail" "R-27 Curve Right Bridge" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/curve/r27_right.mdl "Plarail" "R-27 Curve Right Bridge" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj01.mdl "Plarail" "AJ-01 Station" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj01.mdl "Plarail" "AJ-01 Station" 2 "NULL" "0,128,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj01_2.mdl "Plarail" "AJ-01 2 Station" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj01_2.mdl "Plarail" "AJ-01 2 Station" 2 "NULL" "0,64,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj02.mdl "Plarail" "AJ-02 Support" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj03.mdl "Plarail" "AJ-03" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj03.mdl "Plarail" "AJ-03" 2 "NULL" "0,64,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj03_bridge.mdl "Plarail" "AJ-03 Bridge" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/aj03_top.mdl "Plarail" "AJ-03 Top" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar01.mdl "Plarail" "AR-01 Stop Rail" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar01"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar01.mdl "Plarail" "AR-01 Stop Rail" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar01"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar02.mdl "Plarail" "AR-02 Crossover Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar02"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar02.mdl "Plarail" "AR-02 Crossover Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar02"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar03.mdl "Plarail" "AR-03 Rerailer" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar03.mdl "Plarail" "AR-03 Rerailer" 2 "NULL" "0,256,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_1.mdl "Plarail" "AR-04 1 Turnout Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar04_1"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_1.mdl "Plarail" "AR-04 1 Turnout Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar04_1"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_1.mdl "Plarail" "AR-04 1 Turnout Point" 3 "NULL" "-37.5,90.5,0" "0,135,0" "gmod_plarail_ar04_1"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_2.mdl "Plarail" "AR-04 2 Turnout Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar04_2"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_2.mdl "Plarail" "AR-04 2 Turnout Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar04_2"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_2.mdl "Plarail" "AR-04 2 Turnout Point" 3 "NULL" "-37.5,90.5,0" "0,135,0" "gmod_plarail_ar04_2"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_3.mdl "Plarail" "AR-04 3 Buffer" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar04_3.mdl "Plarail" "AR-04 3 Buffer" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar05_1.mdl "Plarail" "AR-05 1 Double Track Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar05_1"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar05_1.mdl "Plarail" "AR-05 1 Double Track Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar05_1"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar05_1.mdl "Plarail" "AR-05 1 Double Track Point" 3 "NULL" "-48,128,0" "0,90,0" "gmod_plarail_ar05_1"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar05_2.mdl "Plarail" "AR-05 2 Double Track Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar05_2"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar05_2.mdl "Plarail" "AR-05 2 Double Track Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar05_2"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar05_2.mdl "Plarail" "AR-05 2 Double Track Point" 3 "NULL" "-48,128,0" "0,90,0" "gmod_plarail_ar05_2"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar06.mdl "Plarail" "AR-06 Slope Rail" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar06.mdl "Plarail" "AR-06 Slope Rail" 2 "NULL" "0,128,12" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar06_1.mdl "Plarail" "AR-06 Support 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/ar06_2.mdl "Plarail" "AR-06 Support 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/connector_female.mdl "Plarail" "Custom Female" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/connector_female.mdl "Plarail" "Custom Female" 2 "NULL" "0,8,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/connector_male.mdl "Plarail" "Custom Male" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/connector_male.mdl "Plarail" "Custom Male" 2 "NULL" "0,8,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_1.mdl "Plarail" "Custom 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_1.mdl "Plarail" "Custom 1" 2 "NULL" "0,1,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_16.mdl "Plarail" "Custom 16" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_16.mdl "Plarail" "Custom 16" 2 "NULL" "0,16,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_2.mdl "Plarail" "Custom 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_2.mdl "Plarail" "Custom 2" 2 "NULL" "0,2,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_4.mdl "Plarail" "Custom 4" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_4.mdl "Plarail" "Custom 4" 2 "NULL" "0,4,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_8.mdl "Plarail" "Custom 8" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_8.mdl "Plarail" "Custom 8" 2 "NULL" "0,8,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_s_curve_fix.mdl "Plarail" "Custom S Curve Fix" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/custom_s_curve_fix.mdl "Plarail" "Custom S Curve Fix" 2 "NULL" "0,75,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/j14_grey.mdl "Plarail" "J-14 Grey" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/j14_yellow.mdl "Plarail" "J-14 Yellow" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/j15_grey.mdl "Plarail" "J-15 Grey" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/j15_yellow.mdl "Plarail" "J-15 Yellow" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/j22_grey.mdl "Plarail" "J-22 Grey" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/j22_yellow.mdl "Plarail" "J-22 Yellow" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/pole.mdl "Plarail" "Pole" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/r06.mdl "Plarail" "R-06 Slope" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/misc/r06.mdl "Plarail" "R-06 Slope" 2 "NULL" "0,256,48" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r01.mdl "Plarail" "R-01 Straight Full" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r01.mdl "Plarail" "R-01 Straight Full" 2 "NULL" "0,128,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r02.mdl "Plarail" "R-02 Straight Half" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r02.mdl "Plarail" "R-02 Straight Half" 2 "NULL" "0,64,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r04.mdl "Plarail" "R-04 Straight Double" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r04.mdl "Plarail" "R-04 Straight Double" 2 "NULL" "0,128,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r04.mdl "Plarail" "R-04 Straight Double" 3 "NULL" "48,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r04.mdl "Plarail" "R-04 Straight Double" 4 "NULL" "48,128,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r07.mdl "Plarail" "R-07 Straight Long" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r07.mdl "Plarail" "R-07 Straight Long" 2 "NULL" "0,256,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r20_01.mdl "Plarail" "R-20 1 Straight Quarter" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r20_01.mdl "Plarail" "R-20 1 Straight Quarter" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r20_02.mdl "Plarail" "R-20 2 Straight Quarter Male" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r20_02.mdl "Plarail" "R-20 2 Straight Quarter Male" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r20_03.mdl "Plarail" "R-20 3 Straight Quarter Female" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r20_03.mdl "Plarail" "R-20 3 Straight Quarter Female" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r26.mdl "Plarail" "R-26 Straight Bridge" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/plarail/tracks/straight/r26.mdl "Plarail" "R-26 Straight Bridge" 2 "NULL" "0,128,0" "0,90,0" "NULL"
# SynchronizeDSV:(Plarail@PIECES) 20-04-15 16:20:30 [ SQL ]
# PIECES:(MODEL TYPE NAME LINEID POINT ORIGIN ANGLE CLASS)
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r03_left.mdl" "Plarail" "R-03 Curve Left 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r03_left.mdl" "Plarail" "R-03 Curve Left 1" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r03_right.mdl" "Plarail" "R-03 Curve Right 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r03_right.mdl" "Plarail" "R-03 Curve Right 1" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_left.mdl" "Plarail" "R-05 Curve Left Double" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_left.mdl" "Plarail" "R-05 Curve Left Double" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_left.mdl" "Plarail" "R-05 Curve Left Double" 3 "NULL" "48,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_left.mdl" "Plarail" "R-05 Curve Left Double" 4 "NULL" "-3.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_right.mdl" "Plarail" "R-05 Curve Right Double" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_right.mdl" "Plarail" "R-05 Curve Right Double" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_right.mdl" "Plarail" "R-05 Curve Right Double" 3 "NULL" "48,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r05_right.mdl" "Plarail" "R-05 Curve Right Double" 4 "NULL" "-3.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r09_left.mdl" "Plarail" "R-09 Curve Left 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r09_left.mdl" "Plarail" "R-09 Curve Left 2" 2 "NULL" "-51.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r09_right.mdl" "Plarail" "R-09 Curve Right 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r09_right.mdl" "Plarail" "R-09 Curve Right 2" 2 "NULL" "-51.5,124.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r27_left.mdl" "Plarail" "R-27 Curve Left Bridge" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r27_left.mdl" "Plarail" "R-27 Curve Left Bridge" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r27_right.mdl" "Plarail" "R-27 Curve Right Bridge" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/curve/r27_right.mdl" "Plarail" "R-27 Curve Right Bridge" 2 "NULL" "-37.5,90.5,0" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj01.mdl" "Plarail" "AJ-01 Station" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj01.mdl" "Plarail" "AJ-01 Station" 2 "NULL" "0,128,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj01_2.mdl" "Plarail" "AJ-01 2 Station" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj01_2.mdl" "Plarail" "AJ-01 2 Station" 2 "NULL" "0,64,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj02.mdl" "Plarail" "AJ-02 Support" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj03.mdl" "Plarail" "AJ-03" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj03.mdl" "Plarail" "AJ-03" 2 "NULL" "0,64,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj03_bridge.mdl" "Plarail" "AJ-03 Bridge" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/aj03_top.mdl" "Plarail" "AJ-03 Top" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar01.mdl" "Plarail" "AR-01 Stop Rail" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar01"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar01.mdl" "Plarail" "AR-01 Stop Rail" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar01"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar02.mdl" "Plarail" "AR-02 Crossover Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar02"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar02.mdl" "Plarail" "AR-02 Crossover Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar02"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar03.mdl" "Plarail" "AR-03 Rerailer" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar03.mdl" "Plarail" "AR-03 Rerailer" 2 "NULL" "0,256,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_1.mdl" "Plarail" "AR-04 1 Turnout Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar04_1"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_1.mdl" "Plarail" "AR-04 1 Turnout Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar04_1"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_1.mdl" "Plarail" "AR-04 1 Turnout Point" 3 "NULL" "-37.5,90.5,0" "0,135,0" "gmod_plarail_ar04_1"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_2.mdl" "Plarail" "AR-04 2 Turnout Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar04_2"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_2.mdl" "Plarail" "AR-04 2 Turnout Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar04_2"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_2.mdl" "Plarail" "AR-04 2 Turnout Point" 3 "NULL" "-37.5,90.5,0" "0,135,0" "gmod_plarail_ar04_2"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_3.mdl" "Plarail" "AR-04 3 Buffer" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar04_3.mdl" "Plarail" "AR-04 3 Buffer" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar05_1.mdl" "Plarail" "AR-05 1 Double Track Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar05_1"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar05_1.mdl" "Plarail" "AR-05 1 Double Track Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar05_1"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar05_1.mdl" "Plarail" "AR-05 1 Double Track Point" 3 "NULL" "-48,128,0" "0,90,0" "gmod_plarail_ar05_1"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar05_2.mdl" "Plarail" "AR-05 2 Double Track Point" 1 "NULL" "0,0,0" "0,-90,0" "gmod_plarail_ar05_2"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar05_2.mdl" "Plarail" "AR-05 2 Double Track Point" 2 "NULL" "0,128,0" "0,90,0" "gmod_plarail_ar05_2"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar05_2.mdl" "Plarail" "AR-05 2 Double Track Point" 3 "NULL" "-48,128,0" "0,90,0" "gmod_plarail_ar05_2"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar06.mdl" "Plarail" "AR-06 Slope Rail" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar06.mdl" "Plarail" "AR-06 Slope Rail" 2 "NULL" "0,128,12" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar06_1.mdl" "Plarail" "AR-06 Support 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/ar06_2.mdl" "Plarail" "AR-06 Support 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/connector_female.mdl" "Plarail" "Custom Female" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/connector_female.mdl" "Plarail" "Custom Female" 2 "NULL" "0,8,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/connector_male.mdl" "Plarail" "Custom Male" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/connector_male.mdl" "Plarail" "Custom Male" 2 "NULL" "0,8,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_1.mdl" "Plarail" "Custom 1" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_1.mdl" "Plarail" "Custom 1" 2 "NULL" "0,1,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_16.mdl" "Plarail" "Custom 16" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_16.mdl" "Plarail" "Custom 16" 2 "NULL" "0,16,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_2.mdl" "Plarail" "Custom 2" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_2.mdl" "Plarail" "Custom 2" 2 "NULL" "0,2,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_4.mdl" "Plarail" "Custom 4" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_4.mdl" "Plarail" "Custom 4" 2 "NULL" "0,4,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_8.mdl" "Plarail" "Custom 8" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_8.mdl" "Plarail" "Custom 8" 2 "NULL" "0,8,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_s_curve_fix.mdl" "Plarail" "Custom S Curve Fix" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/custom_s_curve_fix.mdl" "Plarail" "Custom S Curve Fix" 2 "NULL" "0,75,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/j14_grey.mdl" "Plarail" "J-14 Grey" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/j14_yellow.mdl" "Plarail" "J-14 Yellow" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/j15_grey.mdl" "Plarail" "J-15 Grey" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/j15_yellow.mdl" "Plarail" "J-15 Yellow" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/j22_grey.mdl" "Plarail" "J-22 Grey" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/j22_yellow.mdl" "Plarail" "J-22 Yellow" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/pole.mdl" "Plarail" "Pole" 1 "NULL" "0,0,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/r06.mdl" "Plarail" "R-06 Slope" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/misc/r06.mdl" "Plarail" "R-06 Slope" 2 "NULL" "0,256,48" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r01.mdl" "Plarail" "R-01 Straight Full" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r01.mdl" "Plarail" "R-01 Straight Full" 2 "NULL" "0,128,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r02.mdl" "Plarail" "R-02 Straight Half" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r02.mdl" "Plarail" "R-02 Straight Half" 2 "NULL" "0,64,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r04.mdl" "Plarail" "R-04 Straight Double" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r04.mdl" "Plarail" "R-04 Straight Double" 2 "NULL" "0,128,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r04.mdl" "Plarail" "R-04 Straight Double" 3 "NULL" "48,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r04.mdl" "Plarail" "R-04 Straight Double" 4 "NULL" "48,128,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r07.mdl" "Plarail" "R-07 Straight Long" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r07.mdl" "Plarail" "R-07 Straight Long" 2 "NULL" "0,256,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r20_01.mdl" "Plarail" "R-20 1 Straight Quarter" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r20_01.mdl" "Plarail" "R-20 1 Straight Quarter" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r20_02.mdl" "Plarail" "R-20 2 Straight Quarter Male" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r20_02.mdl" "Plarail" "R-20 2 Straight Quarter Male" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r20_03.mdl" "Plarail" "R-20 3 Straight Quarter Female" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r20_03.mdl" "Plarail" "R-20 3 Straight Quarter Female" 2 "NULL" "0,32,0" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r26.mdl" "Plarail" "R-26 Straight Bridge" 1 "NULL" "0,0,0" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/plarail/tracks/straight/r26.mdl" "Plarail" "R-26 Straight Bridge" 2 "NULL" "0,128,0" "0,90,0" "NULL"

View File

@ -1,108 +1,108 @@
# SynchronizeDSV:(Ron_s_G_Scale_Track_pack@PIECES) 31-03-19 18:13:06 [ LUA ]
# Data settings:(MODEL TYPE NAME LINEID POINT ORIGIN ANGLE CLASS)
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_1.mdl "Ron's G Scale Track pack" "Curve 1" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_1.mdl "Ron's G Scale Track pack" "Curve 1" 2 "NULL" "-256,256,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_2.mdl "Ron's G Scale Track pack" "Curve 2" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_2.mdl "Ron's G Scale Track pack" "Curve 2" 2 "NULL" "-320,320,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_3.mdl "Ron's G Scale Track pack" "Curve 3" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_3.mdl "Ron's G Scale Track pack" "Curve 3" 2 "NULL" "-384,384,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_4.mdl "Ron's G Scale Track pack" "Curve 4" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/90_4.mdl "Ron's G Scale Track pack" "Curve 4" 2 "NULL" "-448,448,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/s_left.mdl "Ron's G Scale Track pack" "Curve S Left" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/s_left.mdl "Ron's G Scale Track pack" "Curve S Left" 2 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/s_right.mdl "Ron's G Scale Track pack" "Curve S Right" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/curves/s_right.mdl "Ron's G Scale Track pack" "Curve S Right" 2 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/1024.mdl "Ron's G Scale Track pack" "1024" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/1024.mdl "Ron's G Scale Track pack" "1024" 2 "NULL" "0,1024,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/128.mdl "Ron's G Scale Track pack" "128" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/128.mdl "Ron's G Scale Track pack" "128" 2 "NULL" "0,128,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/16.mdl "Ron's G Scale Track pack" "16" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/16.mdl "Ron's G Scale Track pack" "16" 2 "NULL" "0,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/256.mdl "Ron's G Scale Track pack" "256" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/256.mdl "Ron's G Scale Track pack" "256" 2 "NULL" "0,256,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/32.mdl "Ron's G Scale Track pack" "32" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/32.mdl "Ron's G Scale Track pack" "32" 2 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/512.mdl "Ron's G Scale Track pack" "512" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/512.mdl "Ron's G Scale Track pack" "512" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/64.mdl "Ron's G Scale Track pack" "64" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/64.mdl "Ron's G Scale Track pack" "64" 2 "NULL" "0,64,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/buffer.mdl "Ron's G Scale Track pack" "Buffer" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_1.mdl "Ron's G Scale Track pack" "90 1" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_1.mdl "Ron's G Scale Track pack" "90 1" 2 "NULL" "-256,256,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_2.mdl "Ron's G Scale Track pack" "90 2" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_2.mdl "Ron's G Scale Track pack" "90 2" 2 "NULL" "-320,320,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_3.mdl "Ron's G Scale Track pack" "90 3" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_3.mdl "Ron's G Scale Track pack" "90 3" 2 "NULL" "-384,384,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_4.mdl "Ron's G Scale Track pack" "90 4" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/90_4.mdl "Ron's G Scale Track pack" "90 4" 2 "NULL" "-448,448,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/s_left.mdl "Ron's G Scale Track pack" "S Left" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/s_left.mdl "Ron's G Scale Track pack" "S Left" 2 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/s_right.mdl "Ron's G Scale Track pack" "S Right" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/curves/s_right.mdl "Ron's G Scale Track pack" "S Right" 2 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/end.mdl "Ron's G Scale Track pack" "End" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/end.mdl "Ron's G Scale Track pack" "End" 2 "NULL" "0,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/double_junction.mdl "Ron's G Scale Track pack" "S Embankment" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/double_junction.mdl "Ron's G Scale Track pack" "S Embankment" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/double_junction.mdl "Ron's G Scale Track pack" "S Embankment" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/double_junction.mdl "Ron's G Scale Track pack" "S Embankment" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/n_junction_left.mdl "Ron's G Scale Track pack" "N Left Embankment" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/n_junction_left.mdl "Ron's G Scale Track pack" "N Left Embankment" 2 "NULL" ",512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/n_junction_left.mdl "Ron's G Scale Track pack" "N Left Embankment" 3 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/n_junction_right.mdl "Ron's G Scale Track pack" "N Right Embankment" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/n_junction_right.mdl "Ron's G Scale Track pack" "N Right Embankment" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/embankments/junction/n_junction_right.mdl "Ron's G Scale Track pack" "N Right Embankment" 3 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/n_left_switched.mdl "Ron's G Scale Track pack" "N Left Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/n_left_switched.mdl "Ron's G Scale Track pack" "N Left Switched" 2 "NULL" ",512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/n_left_switched.mdl "Ron's G Scale Track pack" "N Left Switched" 3 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/n_left_unswitched.mdl "Ron's G Scale Track pack" "N Left Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/n_left_unswitched.mdl "Ron's G Scale Track pack" "N Left Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/n_left_unswitched.mdl "Ron's G Scale Track pack" "N Left Unswitched" 3 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_switched.mdl "Ron's G Scale Track pack" "S Left Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_switched.mdl "Ron's G Scale Track pack" "S Left Switched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_switched.mdl "Ron's G Scale Track pack" "S Left Switched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_switched.mdl "Ron's G Scale Track pack" "S Left Switched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_unswitched.mdl "Ron's G Scale Track pack" "S Left Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_unswitched.mdl "Ron's G Scale Track pack" "S Left Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_unswitched.mdl "Ron's G Scale Track pack" "S Left Unswitched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/left/s_left_unswitched.mdl "Ron's G Scale Track pack" "S Left Unswitched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/n_right_switched.mdl "Ron's G Scale Track pack" "N Right Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/n_right_switched.mdl "Ron's G Scale Track pack" "N Right Switched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/n_right_switched.mdl "Ron's G Scale Track pack" "N Right Switched" 3 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/n_right_unswitched.mdl "Ron's G Scale Track pack" "N Right Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/n_right_unswitched.mdl "Ron's G Scale Track pack" "N Right Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/n_right_unswitched.mdl "Ron's G Scale Track pack" "N Right Unswitched" 3 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_switched.mdl "Ron's G Scale Track pack" "S Right Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_switched.mdl "Ron's G Scale Track pack" "S Right Switched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_switched.mdl "Ron's G Scale Track pack" "S Right Switched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_switched.mdl "Ron's G Scale Track pack" "S Right Switched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_unswitched.mdl "Ron's G Scale Track pack" "S Right Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_unswitched.mdl "Ron's G Scale Track pack" "S Right Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_unswitched.mdl "Ron's G Scale Track pack" "S Right Unswitched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/junctions/right/s_right_unswitched.mdl "Ron's G Scale Track pack" "S Right Unswitched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/buffer_1.mdl "Ron's G Scale Track pack" "Buffer 1" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/buffer_2.mdl "Ron's G Scale Track pack" "Buffer 2" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_128.mdl "Ron's G Scale Track pack" "Truss 128" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_128.mdl "Ron's G Scale Track pack" "Truss 128" 2 "NULL" "0,128,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_embankment_transition.mdl "Ron's G Scale Track pack" "Truss Embankment Transition" 1 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_embankment_transition.mdl "Ron's G Scale Track pack" "Truss Embankment Transition" 2 "NULL" "0,-32,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_end.mdl "Ron's G Scale Track pack" "Truss End" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_track_transition.mdl "Ron's G Scale Track pack" "Truss Track Transition" 1 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/misc/truss_track_transition.mdl "Ron's G Scale Track pack" "Truss Track Transition" 2 "NULL" "0,-32,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/1024.mdl "Ron's G Scale Track pack" "1024" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/1024.mdl "Ron's G Scale Track pack" "1024" 2 "NULL" "0,1024,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/128.mdl "Ron's G Scale Track pack" "128" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/128.mdl "Ron's G Scale Track pack" "128" 2 "NULL" "0,128,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/16.mdl "Ron's G Scale Track pack" "16" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/16.mdl "Ron's G Scale Track pack" "16" 2 "NULL" "0,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/16_double.mdl "Ron's G Scale Track pack" "16 Double" 1 "NULL" "32,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/16_double.mdl "Ron's G Scale Track pack" "16 Double" 2 "NULL" "-32,0,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/16_double.mdl "Ron's G Scale Track pack" "16 Double" 3 "NULL" "32,16,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/16_double.mdl "Ron's G Scale Track pack" "16 Double" 4 "NULL" "-32,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/256.mdl "Ron's G Scale Track pack" "256" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/256.mdl "Ron's G Scale Track pack" "256" 2 "NULL" "0,256,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/32.mdl "Ron's G Scale Track pack" "32" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/32.mdl "Ron's G Scale Track pack" "32" 2 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/512.mdl "Ron's G Scale Track pack" "512" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/512.mdl "Ron's G Scale Track pack" "512" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/64.mdl "Ron's G Scale Track pack" "64" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES models/ron/gscale/straight/64.mdl "Ron's G Scale Track pack" "64" 2 "NULL" "0,64,3" "0,90,0" "NULL"
# SynchronizeDSV:(Ron_s_G_Scale_Track_pack@PIECES) 20-04-15 16:20:31 [ SQL ]
# PIECES:(MODEL TYPE NAME LINEID POINT ORIGIN ANGLE CLASS)
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_1.mdl" "Ron's G Scale Track pack" "Curve 1" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_1.mdl" "Ron's G Scale Track pack" "Curve 1" 2 "NULL" "-256,256,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_2.mdl" "Ron's G Scale Track pack" "Curve 2" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_2.mdl" "Ron's G Scale Track pack" "Curve 2" 2 "NULL" "-320,320,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_3.mdl" "Ron's G Scale Track pack" "Curve 3" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_3.mdl" "Ron's G Scale Track pack" "Curve 3" 2 "NULL" "-384,384,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_4.mdl" "Ron's G Scale Track pack" "Curve 4" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/90_4.mdl" "Ron's G Scale Track pack" "Curve 4" 2 "NULL" "-448,448,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/s_left.mdl" "Ron's G Scale Track pack" "Curve S Left" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/s_left.mdl" "Ron's G Scale Track pack" "Curve S Left" 2 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/s_right.mdl" "Ron's G Scale Track pack" "Curve S Right" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/curves/s_right.mdl" "Ron's G Scale Track pack" "Curve S Right" 2 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/1024.mdl" "Ron's G Scale Track pack" "1024" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/1024.mdl" "Ron's G Scale Track pack" "1024" 2 "NULL" "0,1024,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/128.mdl" "Ron's G Scale Track pack" "128" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/128.mdl" "Ron's G Scale Track pack" "128" 2 "NULL" "0,128,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/16.mdl" "Ron's G Scale Track pack" "16" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/16.mdl" "Ron's G Scale Track pack" "16" 2 "NULL" "0,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/256.mdl" "Ron's G Scale Track pack" "256" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/256.mdl" "Ron's G Scale Track pack" "256" 2 "NULL" "0,256,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/32.mdl" "Ron's G Scale Track pack" "32" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/32.mdl" "Ron's G Scale Track pack" "32" 2 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/512.mdl" "Ron's G Scale Track pack" "512" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/512.mdl" "Ron's G Scale Track pack" "512" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/64.mdl" "Ron's G Scale Track pack" "64" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/64.mdl" "Ron's G Scale Track pack" "64" 2 "NULL" "0,64,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/buffer.mdl" "Ron's G Scale Track pack" "Buffer" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_1.mdl" "Ron's G Scale Track pack" "90 1" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_1.mdl" "Ron's G Scale Track pack" "90 1" 2 "NULL" "-256,256,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_2.mdl" "Ron's G Scale Track pack" "90 2" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_2.mdl" "Ron's G Scale Track pack" "90 2" 2 "NULL" "-320,320,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_3.mdl" "Ron's G Scale Track pack" "90 3" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_3.mdl" "Ron's G Scale Track pack" "90 3" 2 "NULL" "-384,384,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_4.mdl" "Ron's G Scale Track pack" "90 4" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/90_4.mdl" "Ron's G Scale Track pack" "90 4" 2 "NULL" "-448,448,3" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/s_left.mdl" "Ron's G Scale Track pack" "S Left" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/s_left.mdl" "Ron's G Scale Track pack" "S Left" 2 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/s_right.mdl" "Ron's G Scale Track pack" "S Right" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/curves/s_right.mdl" "Ron's G Scale Track pack" "S Right" 2 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/end.mdl" "Ron's G Scale Track pack" "End" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/end.mdl" "Ron's G Scale Track pack" "End" 2 "NULL" "0,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/double_junction.mdl" "Ron's G Scale Track pack" "S Embankment" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/double_junction.mdl" "Ron's G Scale Track pack" "S Embankment" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/double_junction.mdl" "Ron's G Scale Track pack" "S Embankment" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/double_junction.mdl" "Ron's G Scale Track pack" "S Embankment" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/n_junction_left.mdl" "Ron's G Scale Track pack" "N Left Embankment" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/n_junction_left.mdl" "Ron's G Scale Track pack" "N Left Embankment" 2 "NULL" ",512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/n_junction_left.mdl" "Ron's G Scale Track pack" "N Left Embankment" 3 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/n_junction_right.mdl" "Ron's G Scale Track pack" "N Right Embankment" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/n_junction_right.mdl" "Ron's G Scale Track pack" "N Right Embankment" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/embankments/junction/n_junction_right.mdl" "Ron's G Scale Track pack" "N Right Embankment" 3 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/n_left_switched.mdl" "Ron's G Scale Track pack" "N Left Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/n_left_switched.mdl" "Ron's G Scale Track pack" "N Left Switched" 2 "NULL" ",512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/n_left_switched.mdl" "Ron's G Scale Track pack" "N Left Switched" 3 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/n_left_unswitched.mdl" "Ron's G Scale Track pack" "N Left Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/n_left_unswitched.mdl" "Ron's G Scale Track pack" "N Left Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/n_left_unswitched.mdl" "Ron's G Scale Track pack" "N Left Unswitched" 3 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_switched.mdl" "Ron's G Scale Track pack" "S Left Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_switched.mdl" "Ron's G Scale Track pack" "S Left Switched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_switched.mdl" "Ron's G Scale Track pack" "S Left Switched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_switched.mdl" "Ron's G Scale Track pack" "S Left Switched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_unswitched.mdl" "Ron's G Scale Track pack" "S Left Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_unswitched.mdl" "Ron's G Scale Track pack" "S Left Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_unswitched.mdl" "Ron's G Scale Track pack" "S Left Unswitched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/left/s_left_unswitched.mdl" "Ron's G Scale Track pack" "S Left Unswitched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/n_right_switched.mdl" "Ron's G Scale Track pack" "N Right Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/n_right_switched.mdl" "Ron's G Scale Track pack" "N Right Switched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/n_right_switched.mdl" "Ron's G Scale Track pack" "N Right Switched" 3 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/n_right_unswitched.mdl" "Ron's G Scale Track pack" "N Right Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/n_right_unswitched.mdl" "Ron's G Scale Track pack" "N Right Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/n_right_unswitched.mdl" "Ron's G Scale Track pack" "N Right Unswitched" 3 "NULL" "64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_switched.mdl" "Ron's G Scale Track pack" "S Right Switched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_switched.mdl" "Ron's G Scale Track pack" "S Right Switched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_switched.mdl" "Ron's G Scale Track pack" "S Right Switched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_switched.mdl" "Ron's G Scale Track pack" "S Right Switched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_unswitched.mdl" "Ron's G Scale Track pack" "S Right Unswitched" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_unswitched.mdl" "Ron's G Scale Track pack" "S Right Unswitched" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_unswitched.mdl" "Ron's G Scale Track pack" "S Right Unswitched" 3 "NULL" "-64,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/junctions/right/s_right_unswitched.mdl" "Ron's G Scale Track pack" "S Right Unswitched" 4 "NULL" "-64,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/buffer_1.mdl" "Ron's G Scale Track pack" "Buffer 1" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/buffer_2.mdl" "Ron's G Scale Track pack" "Buffer 2" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_128.mdl" "Ron's G Scale Track pack" "Truss 128" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_128.mdl" "Ron's G Scale Track pack" "Truss 128" 2 "NULL" "0,128,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_embankment_transition.mdl" "Ron's G Scale Track pack" "Truss Embankment Transition" 1 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_embankment_transition.mdl" "Ron's G Scale Track pack" "Truss Embankment Transition" 2 "NULL" "0,-32,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_end.mdl" "Ron's G Scale Track pack" "Truss End" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_track_transition.mdl" "Ron's G Scale Track pack" "Truss Track Transition" 1 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/misc/truss_track_transition.mdl" "Ron's G Scale Track pack" "Truss Track Transition" 2 "NULL" "0,-32,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/1024.mdl" "Ron's G Scale Track pack" "1024" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/1024.mdl" "Ron's G Scale Track pack" "1024" 2 "NULL" "0,1024,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/128.mdl" "Ron's G Scale Track pack" "128" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/128.mdl" "Ron's G Scale Track pack" "128" 2 "NULL" "0,128,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/16.mdl" "Ron's G Scale Track pack" "16" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/16.mdl" "Ron's G Scale Track pack" "16" 2 "NULL" "0,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/16_double.mdl" "Ron's G Scale Track pack" "16 Double" 1 "NULL" "32,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/16_double.mdl" "Ron's G Scale Track pack" "16 Double" 2 "NULL" "-32,0,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/16_double.mdl" "Ron's G Scale Track pack" "16 Double" 3 "NULL" "32,16,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/16_double.mdl" "Ron's G Scale Track pack" "16 Double" 4 "NULL" "-32,16,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/256.mdl" "Ron's G Scale Track pack" "256" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/256.mdl" "Ron's G Scale Track pack" "256" 2 "NULL" "0,256,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/32.mdl" "Ron's G Scale Track pack" "32" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/32.mdl" "Ron's G Scale Track pack" "32" 2 "NULL" "0,32,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/512.mdl" "Ron's G Scale Track pack" "512" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/512.mdl" "Ron's G Scale Track pack" "512" 2 "NULL" "0,512,3" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/64.mdl" "Ron's G Scale Track pack" "64" 1 "NULL" "0,0,3" "0,-90,0" "NULL"
TRACKASSEMBLY_PIECES "models/ron/gscale/straight/64.mdl" "Ron's G Scale Track pack" "64" 2 "NULL" "0,64,3" "0,90,0" "NULL"

View File

@ -0,0 +1,8 @@
# SynchronizeDSV:(Shinji85_s_Rails@ADDITIONS) 20-04-15 16:20:30 [ SQL ]
# ADDITIONS:(MODELBASE MODELADD ENTCLASS LINEID POSOFF ANGOFF MOVETYPE PHYSINIT DRSHADOW PHMOTION PHYSLEEP SETSOLID)
TRACKASSEMBLY_ADDITIONS "models/shinji85/train/rail_l_switch.mdl" "models/shinji85/train/sw_lever.mdl" "buttonswitch" 1 "-100,-125,0" "0,180,0" -1 -1 -1 0 -1 -1
TRACKASSEMBLY_ADDITIONS "models/shinji85/train/rail_l_switch.mdl" "models/shinji85/train/rail_l_switcher1.mdl" "prop_dynamic" 2 "NULL" "NULL" 6 6 -1 -1 1 6
TRACKASSEMBLY_ADDITIONS "models/shinji85/train/rail_l_switch.mdl" "models/shinji85/train/rail_l_switcher2.mdl" "prop_dynamic" 3 "NULL" "NULL" 6 6 -1 0 -1 0
TRACKASSEMBLY_ADDITIONS "models/shinji85/train/rail_r_switch.mdl" "models/shinji85/train/sw_lever.mdl" "buttonswitch" 1 "-100,125,0" "NULL" -1 -1 -1 0 -1 -1
TRACKASSEMBLY_ADDITIONS "models/shinji85/train/rail_r_switch.mdl" "models/shinji85/train/rail_r_switcher1.mdl" "prop_dynamic" 2 "NULL" "NULL" 6 6 -1 -1 1 6
TRACKASSEMBLY_ADDITIONS "models/shinji85/train/rail_r_switch.mdl" "models/shinji85/train/rail_r_switcher2.mdl" "prop_dynamic" 3 "NULL" "NULL" 6 6 -1 0 -1 0

View File

@ -0,0 +1,10 @@
# ExportCategory:(3@Shinji85_s_Rails) 20-04-15 16:20:30 [ SQL ]
[===[Shinji85's Rails===function(m) local c
local r = m:gsub("models/shinji85/train/rail_", "")
if(r:find("cross")) then c = "crossing"
elseif(r:find("switch")) then c = "switch"
elseif(r:find("curve")) then c = "curve"
elseif(r:find("bumper")) then c = "bumper"
elseif(r:find("junction")) then c = "junction"
elseif(r:find("%dx")) then c = "straight"
end; c = (c and c:gsub("^%l", string.upper) or nil) return c end]===]

View File

@ -0,0 +1,57 @@
# SynchronizeDSV:(Shinji85_s_Rails@PIECES) 20-04-15 16:20:30 [ SQL ]
# PIECES:(MODEL TYPE NAME LINEID POINT ORIGIN ANGLE CLASS)
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_16x.mdl" "Shinji85's Rails" "Straight 16x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_16x.mdl" "Shinji85's Rails" "Straight 16x" 2 "NULL" "-2048,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_1x.mdl" "Shinji85's Rails" "Straight 1x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_1x.mdl" "Shinji85's Rails" "Straight 1x" 2 "NULL" "-128,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_2x.mdl" "Shinji85's Rails" "Straight 2x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_2x.mdl" "Shinji85's Rails" "Straight 2x" 2 "NULL" "-256,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_4x.mdl" "Shinji85's Rails" "Straight 4x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_4x.mdl" "Shinji85's Rails" "Straight 4x" 2 "NULL" "-512,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_4x_crossing.mdl" "Shinji85's Rails" "Crossing 4x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_4x_crossing.mdl" "Shinji85's Rails" "Crossing 4x" 2 "NULL" "-512,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_8x.mdl" "Shinji85's Rails" "Straight 8x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_8x.mdl" "Shinji85's Rails" "Straight 8x" 2 "NULL" "-1024,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_bumper.mdl" "Shinji85's Rails" "Bumper" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cross_4x.mdl" "Shinji85's Rails" "Cross 4x" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cross_4x.mdl" "Shinji85's Rails" "Cross 4x" 2 "NULL" "-512,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cross_4x.mdl" "Shinji85's Rails" "Cross 4x" 3 "NULL" "-256,-256,7.346" "0,270,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cross_4x.mdl" "Shinji85's Rails" "Cross 4x" 4 "NULL" "-256,256,7.346" "0,90,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cs.mdl" "Shinji85's Rails" "Counter Switch" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cs.mdl" "Shinji85's Rails" "Counter Switch" 2 "NULL" "-908.81165,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_csfix.mdl" "Shinji85's Rails" "Counter Switch Fix" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_csfix.mdl" "Shinji85's Rails" "Counter Switch Fix" 2 "NULL" "-115.18847,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_cc.mdl" "Shinji85's Rails" "Curve Cc" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_cc.mdl" "Shinji85's Rails" "Curve Cc" 2 "NULL" "-966.40515 ,128, 7.346" "0,165,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r1.mdl" "Shinji85's Rails" "Curve R1" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r1.mdl" "Shinji85's Rails" "Curve R1" 2 "NULL" "-1060.12341 ,139.56763 ,7.346" "0,165,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r11.mdl" "Shinji85's Rails" "Curve R11" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r11.mdl" "Shinji85's Rails" "Curve R11" 2 "NULL" "-1086.11584 ,449.88458 ,7.346" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r12.mdl" "Shinji85's Rails" "Curve R12" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r12.mdl" "Shinji85's Rails" "Curve R12" 2 "NULL" "-905.09656 ,374.90414 ,7.346" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r13.mdl" "Shinji85's Rails" "Curve R13" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r13.mdl" "Shinji85's Rails" "Curve R13" 2 "NULL" "-724.07727 ,299.92276 ,7.346" "0,135,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r2.mdl" "Shinji85's Rails" "Curve R2" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r2.mdl" "Shinji85's Rails" "Curve R2" 2 "NULL" "-993.86572 ,130.84471 ,7.346" "0,165,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r3.mdl" "Shinji85's Rails" "Curve R3" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_curve_r3.mdl" "Shinji85's Rails" "Curve R3" 2 "NULL" "-927.60797 ,122.1218 ,7.346" "0,165,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cx.mdl" "Shinji85's Rails" "Counter X" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cx.mdl" "Shinji85's Rails" "Counter X" 2 "NULL" "-362.51361,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cxfix.mdl" "Shinji85's Rails" "Counter X Fix" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_cxfix.mdl" "Shinji85's Rails" "Counter X Fix" 2 "NULL" "-149.48648,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_double_4x_crossing.mdl" "Shinji85's Rails" "Crossing Double 4x" 1 "NULL" "0,128,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_double_4x_crossing.mdl" "Shinji85's Rails" "Crossing Double 4x" 2 "NULL" "-512,128,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_double_4x_crossing.mdl" "Shinji85's Rails" "Crossing Double 4x" 3 "NULL" "0,-128,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_double_4x_crossing.mdl" "Shinji85's Rails" "Crossing Double 4x" 4 "NULL" "-512,-128,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_double_bumper.mdl" "Shinji85's Rails" "Bumper Double" 1 "NULL" "0,128,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_double_bumper.mdl" "Shinji85's Rails" "Bumper Double" 2 "NULL" "0,-128,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_l_switch.mdl" "Shinji85's Rails" "Left Switch" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_l_switch.mdl" "Shinji85's Rails" "Left Switch" 2 "NULL" "-1024,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_l_switch.mdl" "Shinji85's Rails" "Left Switch" 3 "NULL" "-966.40515 ,-128, 7.346" "0,195,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_r_switch.mdl" "Shinji85's Rails" "Right Switch" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_r_switch.mdl" "Shinji85's Rails" "Right Switch" 2 "NULL" "-1024,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_r_switch.mdl" "Shinji85's Rails" "Right Switch" 3 "NULL" "-966.40515 ,128, 7.346" "0,165,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_x_junction.mdl" "Shinji85's Rails" "X Junction" 1 "NULL" "0,0,7.346" "NULL" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_x_junction.mdl" "Shinji85's Rails" "X Junction" 2 "NULL" "-494.55,0,7.346" "0,180,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_x_junction.mdl" "Shinji85's Rails" "X Junction" 3 "NULL" "-33.129,-123.63866,7.346" "0,-30,0" "NULL"
TRACKASSEMBLY_PIECES "models/shinji85/train/rail_x_junction.mdl" "Shinji85's Rails" "X Junction" 4 "NULL" "-461.42175,123.63649,7.346" "0,150,0" "NULL"

File diff suppressed because it is too large Load Diff

View File

@ -158,7 +158,7 @@
27 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PHYSPROPERTIES.CreateTable: Created
28 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] Init: DB CATEGORY from LUA
29 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] Init: DB PIECES from LUA
30 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(SligWolf's Rerailers): Avoided {nil}<nil> [SligWolf's Rerailers]
30 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(SligWolf's Rerailers): Avoided {nil}<nil> [SligWolf's Rerailers]
31 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_minitrain_switch@models/minitrains/switch.mdl>
32 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_minitrain_doubleswitch@models/minitrains/switch_double.mdl>
33 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_minitrain_switch_w1@models/minitrains/switch_w_1_128.mdl>
@ -173,28 +173,28 @@
42 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_minitrain_switch_y4@models/minitrains/switch_y_4_128.mdl>
43 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_minitrain_switch_y5@models/minitrains/switch_y_5_128.mdl>
44 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_minitrain_switch_y6@models/minitrains/switch_y_6_128.mdl>
45 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(PHX Monorail): Avoided {nil}<nil> [PHX Monorail]
46 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(PHX Metal): Avoided {nil}<nil> [PHX Metal]
47 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(PHX Regular): Avoided {nil}<nil> [PHX Regular]
48 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(PHX Road): Avoided {nil}<nil> [PHX Road]
49 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(PHX Monorail Beam): Avoided {nil}<nil> [PHX Monorail Beam]
50 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(SligWolf's Railcar): Avoided {nil}<nil> [SligWolf's Railcar]
51 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Random Bridges): Avoided {nil}<nil> [Random Bridges]
52 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Portal Tubes): Avoided {nil}<nil> [Portal Tubes]
45 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(PHX Monorail): Avoided {nil}<nil> [PHX Monorail]
46 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(PHX Metal): Avoided {nil}<nil> [PHX Metal]
47 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(PHX Regular): Avoided {nil}<nil> [PHX Regular]
48 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(PHX Road): Avoided {nil}<nil> [PHX Road]
49 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(PHX Monorail Beam): Avoided {nil}<nil> [PHX Monorail Beam]
50 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(SligWolf's Railcar): Avoided {nil}<nil> [SligWolf's Railcar]
51 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Random Bridges): Avoided {nil}<nil> [Random Bridges]
52 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Portal Tubes): Avoided {nil}<nil> [Portal Tubes]
53 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_modelpack_switch_y@models/sligwolf/rails/switch_225_y.mdl>
54 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_modelpack_switch_r@models/sligwolf/rails/switch_225_r.mdl>
55 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] PIECES.Record(Trigs): Register trace <gmod_sw_modelpack_switch_l@models/sligwolf/rails/switch_225_l.mdl>
56 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] Init: DB PHYSPROPERTIES from LUA
57 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Special): Avoided {nil}<nil> [Special]
58 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Concrete): Avoided {nil}<nil> [Concrete]
59 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Metal): Avoided {nil}<nil> [Metal]
60 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Wood): Avoided {nil}<nil> [Wood]
61 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Terrain): Avoided {nil}<nil> [Terrain]
62 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Liquid): Avoided {nil}<nil> [Liquid]
63 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Frozen): Avoided {nil}<nil> [Frozen]
64 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Miscellaneous): Avoided {nil}<nil> [Miscellaneous]
65 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Organic): Avoided {nil}<nil> [Organic]
66 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.GetCategory(Manufactured): Avoided {nil}<nil> [Manufactured]
57 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Special): Avoided {nil}<nil> [Special]
58 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Concrete): Avoided {nil}<nil> [Concrete]
59 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Metal): Avoided {nil}<nil> [Metal]
60 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Wood): Avoided {nil}<nil> [Wood]
61 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Terrain): Avoided {nil}<nil> [Terrain]
62 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Liquid): Avoided {nil}<nil> [Liquid]
63 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Frozen): Avoided {nil}<nil> [Frozen]
64 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Miscellaneous): Avoided {nil}<nil> [Miscellaneous]
65 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Organic): Avoided {nil}<nil> [Organic]
66 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] TYPE.Categorize(Manufactured): Avoided {nil}<nil> [Manufactured]
67 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] Init: DB ADDITIONS from LUA
68 [14-05-19 22:53:52] CLIENT > TRACKASSEMBLY [LUA] Init: Ver.6.523
69 [14-05-19 22:53:53] CLIENT > TRACKASSEMBLY [LUA] Incognito: >>> @lua/autorun/z_autorun_add_pieces_plarail.lua

View File

@ -7,6 +7,8 @@ LocatePOA: Missing ID
TimerRestart: Called by
DrawToolScreen: Invalid screen
DrawHUD: Invalid screen
GetEntitySpawn: Trace outside radius
GetEntitySpawn: Active point missed
GetEntitySpawn: Not hitting active point
CacheQueryPiece: Record not located
GetEntitySpawn: Trace model missing
@ -15,17 +17,19 @@ TOOL.SwitchPoint
IntersectRayRead
IntersectRayClear
IntersectRayHash
MakeScreen.DrawLine: Start out of border
MakeScreen.DrawLine: End out of border
MakeScreen.GetColor: Color reset
MakeScreen.GetDistance: Start out of border
MakeScreen.GetDistance: End out of border
MakeScreen: Color list not container
GetScreen.DrawLine: Start out of border
GetScreen.DrawLine: End out of border
GetScreen.GetColor: Color reset
GetScreen.GetDistance: Start out of border
GetScreen.GetDistance: End out of border
GetScreen: Color list not container
DRAW_RADMENU: Release
DRAW_RADMENU: Hook mismatch
DRAW_RADMENU: Scroll release
DRAW_RADMENU: Menu disabled
DRAW_PHYSGUN: Extension disabled
DRAW_RADMENU: %(gmod_tool%) Swep other
DRAW_GHOSTS: Swep invalid
DRAW_GHOSTS: Swep not tool
DRAW_GHOSTS: %(gmod_tool%) Swep other
DRAW_GHOSTS: Tool different
@ -34,6 +38,7 @@ DRAW_PHYSGUN: Trace world
DRAW_PHYSGUN: Hook mismatch
DRAW_PHYSGUN: Physgun not hold
DRAW_PHYSGUN: Swep not physgun
DRAW_PHYSGUN: Swep invalid
DRAW_PHYSGUN: Extension disabled
DRAW_PHYSGUN: %(weapon_physgun%) Swep other
POINT_SELECT: Bind not pressed

View File

@ -1,8 +1,16 @@
[img=https://i.imgur.com/2txEPIN.gif][/img]
[h1] Description [/h1]
This script can give you the ability to connect prop-segmented track pieces fast. It is optimized and brings the track building time consuming to a minimum. It uses pre-defined active points to snap the segments the best way there is in Garry's Mod
[h1] Feature List [/h1]
[list]
[*] General convar [url=https://youtu.be/3Ws6Jh3JUew?t=2051]factory reset[/url] can be easily triggered by the server admins
[*] Convar tweaks is accessible via [url=https://youtu.be/3Ws6Jh3JUew?t=56]dedicated in-game manipulation panel[/url]
[*] Context menu for direct track entity [url=https://www.youtube.com/watch?v=mEEpO3w8BLs]value export and manipulation[/url]
[*] Optional [url=https://youtu.be/3Ws6Jh3JUew?t=2146]flip-over mode called from spawning/snapping[/url] for quickly flip the anchor across
[*] Track segment [url=https://youtu.be/3Ws6Jh3JUew?t=1358]flip over mode for mirroring[/url] already created [url=https://youtu.be/3Ws6Jh3JUew?t=1722]loops and curves[/url]
[*] Track segment [url=https://youtu.be/3Ws6Jh3JUew?t=200]curve node interpolation[/url] for building custom track layouts
[*] Track curve fitting aligment based on [url=https://www.youtube.com/watch?v=1rsDHU79J50]ray intersection for precise piece layout[/url]
[*] Extendable database via [url=https://www.youtube.com/watch?v=Pz0_RGwgfaY]text file[/url] or a [url=https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/autosave/z_autorun_add_pieces.lua]lua script[/url]
[*] Extendable database via [url=https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/trackassembly/trackasmlib_dsv.txt]text file load list[/url] and [url=https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/trackassembly/dsv/Test_s_track_packTRACKASSEMBLY_PIECES.txt]list prefixes[/url] [url=https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/trackassembly/dsv/Test_s_track_packTRACKASSEMBLY_CATEGORY.txt]categories[/url]
@ -14,7 +22,7 @@ This script can give you the ability to connect prop-segmented track pieces fast
[*] Snapping/spawning at the mass-center or the active point ( if checked )
[*] Snapping the first piece yaw to user defined angle
[*] Snapping already spawned pieces by [url=https://www.youtube.com/watch?v=BxMlZMMGHrs]using only the physgun[/url]
[*] Fast changing the active track ends ( Alt + mouse scroll. Good switching turns direction )
[*] Fast changing the active track ends ( Alt + mouse scroll good switching turns direction )
[*] Custom user defined active radius based snapping
[*] Custom active point and radius location assistant
[*] Custom active point position angle and orientation adviser
@ -36,12 +44,18 @@ For detailed manual, please refer to Readme.md
Readme: https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/readme.md
Wiki page: https://github.com/dvdvideo1234/TrackAssemblyTool/wiki
Git repository: https://github.com/dvdvideo1234/TrackAssemblyTool
Report errors to: https://github.com/dvdvideo1234/TrackAssemblyTool/issues
Releases: https://github.com/dvdvideo1234/TrackAssemblyTool/releases
E2 API: https://github.com/dvdvideo1234/TrackAssemblyTool/wiki/Wiremod-API
One way turns problem: https://github.com/dvdvideo1234/TrackAssemblyTool#how-can-i-chose-and-select-a-desired-track-end-
Reuploading and source stealing will not be tolerated !
Selling it is also out of option, as the open source suggests !

View File

@ -1,2 +1,6 @@
.git
.svn
.svn
.github
.gitattributes
.gitignore
data

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,413 @@
--[[
* The purpose of this Lua file is to add your track pack pieces to the
* track assembly tool, so they can appear in the tool selection menu.
* Why the name starts with /z/ you may ask. When Gmod loads the game
* it goes trough all the Lua addons alphabetically.
* That means your file name ( The file you are reading right now )
* must be greater alphabetically than /trackasmlib/, so the API of the
* module can be loaded before you can use it like seen below.
]]--
-- Local reference to the module.
local asmlib = trackasmlib
-- Change this to your addon name.
local myAddon = "Shinji85's Rails" -- Your addon name goes here
--[[
* Change this if you want to use different in-game type
* You can also use multiple types myType1, myType2,
* myType3, ... myType/n when your addon contains
* multiple model packs.
]]--
local myType = myAddon -- The type your addon resides in the tool with
--[[
* For actually produce an error you can replace the /print/
* statement with one of following API calls:
* http://wiki.garrysmod.com/page/Global/error
* http://wiki.garrysmod.com/page/Global/Error
* http://wiki.garrysmod.com/page/Global/ErrorNoHalt
]]
local myError = ErrorNoHalt
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix
-- This is the script path. It tells TA who wants to add these models
-- Do not touch this also, it is used for debugging
local myScript = tostring(debug.getinfo(1).source or "N/A")
myScript = "@"..myScript:gsub("^%W+", ""):gsub("\\","/")
--[[
* This function defines what happens when there is an error present
* Usually you can tell Gmod that you want it to generate an error
* and throw the message to the log also. In this case you will not
* have to change the function name in lots of places
* when you need it to do something else.
--]]
local function myThrowError(vMesg)
local sMesg = tostring(vMesg) -- Make sure the message is string
if(asmlib) then asmlib.LogInstance(sMesg) end -- Output the message into the logs
myError(myScript.." > ("..myAddon.."): "..sMesg) -- Generate an error in the console ( optional )
end
if(asmlib) then
-- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsFormPF = asmlib.GetOpVar("FORM_PREFIXDSV")
-- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
asmlib.GetOpVar("DIRPATH_DSV")..
gsFormPF:format(myPrefix, gsToolPF.."PIECES")
--[[
* This flag is used when the track pieces list needs to be processed.
* It generally represents the locking file persistence flag. It is
* bound to finding a "PIECES" DSV external database for the prefix
* of your addon. You can use it for boolean value deciding whenever
* or not to run certain events. For example you can stop exporting
* your local database every time Gmod loads, but then the user will
* skip the available updates of your addon until he/she deletes the DSVs.
]]--
local myFlag = file.Exists(myDsv, "DATA")
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
-- Register the addon to the workshop ID list
asmlib.WorkshopID(myAddon, 326640186)
--[[
* Register the addon to the auto-load prefix list when the
* PIECES file is missing. The auto-load list is located in
* (/garrysmod/data/trackassembly/trackasmlib_dsv.txt)
* a.k.a the DATA folder of Garry's mod.
*
* @bSuccess = RegisterDSV(sProg, sPref, sDelim)
* sProg > The program which registered the DSV
* sPref > The external data prefix to be added ( default instance prefix )
* sDelim > The delimiter to be used for processing ( default tab )
* bSkip > Skip addition for the DSV prefix if exists ( default `false` )
]]--
asmlib.LogInstance("RegisterDSV start <"..myPrefix..">")
if(myFlag) then -- Your DSV must be registered only once when loading for the first time
asmlib.LogInstance("RegisterDSV skip <"..myPrefix..">")
else -- If the locking file is not located that means this is the first run of your script
if(not asmlib.RegisterDSV(myScript, myPrefix)) then -- Register the DSV prefix and check for error
myThrowError("Failed to register DSV") -- Throw the error if fails
end -- Third argument is the delimiter. The default tab is used
asmlib.LogInstance("RegisterDSV done <"..myPrefix..">")
end
--[[
* This is used if you want to make internal categories for your addon
* You must make a function as a string under the hash of your addon
* The function must take only one argument and that is the model
* For every sub-category of your track pieces, you must return a table
* with that much elements or return a /nil/ value to add the piece to
* the root of your branch. You can also return a second value if you
* want to override the track piece name. If you need to use categories
* for multiple track types, just put their hashes in the table below
* and make every track point to its dedicated category handler.
]]--
local myCategory = {
[myType] = {Txt = [[
function(m) local c
local r = m:gsub("models/shinji85/train/rail_", "")
if(r:find("cross")) then c = "crossing"
elseif(r:find("switch")) then c = "switch"
elseif(r:find("curve")) then c = "curve"
elseif(r:find("bumper")) then c = "bumper"
elseif(r:find("junction")) then c = "junction"
elseif(r:find("%dx")) then c = "straight" end; return c end
]]}
}
--[[
* This logic statement is needed for reporting the error in the console if the
* process fails.
*
@ bSuccess = ExportCategory(nInd, tData, sPref)
* nInd > The index equal indent format to be stored with ( generally = 3 )
* tData > The category functional definition you want to use to divide your stuff with
* sPref > An export file custom prefix. For synchronizing
* it must be related to your addon ( default is instance prefix )
]]--
asmlib.LogInstance("ExportCategory start <"..myPrefix..">")
if(CLIENT) then -- Category handling is client side only
if(not asmlib.IsEmpty(myCategory)) then
if(not asmlib.ExportCategory(3, myCategory, myPrefix)) then
myThrowError("Failed to synchronize category")
end; asmlib.LogInstance("ExportCategory done <"..myPrefix..">")
else asmlib.LogInstance("ExportCategory skip <"..myPrefix..">") end
else asmlib.LogInstance("ExportCategory server <"..myPrefix..">") end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your MODEL,
* and then for every active point, you must have one array of
* strings, where the elements match the following data settings.
* You can use the disable event /#/ to make TA auto-fill
* the value provided and you can also add multiple track types myType[1-n].
* If you need to use piece origin/angle with model attachment, you must use
* the attachment extraction event /!/. The model attachment format is
* /!<attachment_name>/ and it depends what attachment name you gave it when you
* created the model. If you need TA to extract the origin/angle from an attachment named
* /test/ for example, you just need to put the string /!test/ in the origin/angle column for that model.
* {MODEL, TYPE, NAME, LINEID, POINT, ORIGIN, ANGLE, CLASS}
* MODEL > This string contains the path to your /*.mdl/ file. It is mandatory and
* taken in pairs with LINEID, it forms the unique identifier of every record.
* When used in /DSV/ mode ( like seen below ) is is used as a hash index.
* TYPE > This string is the name of the type your stuff will reside in the panel.
* Disabling this, makes it use the value of the /DEFAULT_TYPE/ variable.
* If it is empty uses the string /TYPE/, so make sure you fill this.
* NAME > This is the name of your track piece. Put /#/ here to be auto-generated from
* the model ( from the last slash to the file extension ).
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* POINT > This is the local position vector that TA searches and selects the related
* ORIGIN for. An empty string is treated as taking the ORIGIN.
* Disabling this using the disable event makes it hidden when the active point is searched for
* ORIGIN > This is the origin relative to which the next track piece position is calculated
* An empty string is treated as {0,0,0}. Disabling this makes it non-selectable by the holder
* You can also fill it with attachment event /!/ followed by your attachment name.
* ANGLE > This is the angle relative to which the forward and up vectors are calculated.
* An empty string is treated as {0,0,0}. Disabling this also makes it use {0,0,0}
* You can also fill it with attachment event /!/ followed by your attachment name.
* CLASS > This string is populated up when your entity class is not /prop_physics/ but something else
* used by ents.Create of the gmod ents API library. Keep this empty if your stuff is a normal prop.
]]--
local myPieces = {
["models/shinji85/train/rail_16x.mdl"] = {
{myType, "Straight 16x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Straight 16x", gsSymOff, gsMissDB, "-2048,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_1x.mdl"] = {
{myType, "Straight 1x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Straight 1x", gsSymOff, gsMissDB, "-128,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_2x.mdl"] = {
{myType, "Straight 2x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Straight 2x", gsSymOff, gsMissDB, "-256,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_4x.mdl"] = {
{myType, "Straight 4x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Straight 4x", gsSymOff, gsMissDB, "-512,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_4x_crossing.mdl"] = {
{myType, "Crossing 4x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Crossing 4x", gsSymOff, gsMissDB, "-512,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_8x.mdl"] = {
{myType, "Straight 8x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Straight 8x", gsSymOff, gsMissDB, "-1024,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_bumper.mdl"] = {
{myType, "Bumper", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB}
},
["models/shinji85/train/rail_cross_4x.mdl"] = {
{myType, "Cross 4x", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Cross 4x", gsSymOff, gsMissDB, "-512,0,7.346", "0,180,0", gsMissDB},
{myType, "Cross 4x", gsSymOff, gsMissDB, "-256,-256,7.346", "0,270,0", gsMissDB},
{myType, "Cross 4x", gsSymOff, gsMissDB, "-256,256,7.346", "0,90,0", gsMissDB}
},
["models/shinji85/train/rail_cs.mdl"] = {
{myType, "Counter Switch", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Counter Switch", gsSymOff, gsMissDB, "-908.81165,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_csfix.mdl"] = {
{myType, "Counter Switch Fix", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Counter Switch Fix", gsSymOff, gsMissDB, "-115.18847,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_curve_cc.mdl"] = {
{myType, "Curve Cc", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve Cc", gsSymOff, gsMissDB, "-966.40515,128,7.346", "0,165,0", gsMissDB}
},
["models/shinji85/train/rail_curve_r1.mdl"] = {
{myType, "Curve R1", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve R1", gsSymOff, gsMissDB, "-1060.12341,139.56763,7.346", "0,165,0", gsMissDB}
},
["models/shinji85/train/rail_curve_r11.mdl"] = {
{myType, "Curve R11", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve R11", gsSymOff, gsMissDB, "-1086.11584,449.88458,7.346", "0,135,0", gsMissDB}
},
["models/shinji85/train/rail_curve_r12.mdl"] = {
{myType, "Curve R12", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve R12", gsSymOff, gsMissDB, "-905.09656,374.90414,7.346", "0,135,0", gsMissDB}
},
["models/shinji85/train/rail_curve_r13.mdl"] = {
{myType, "Curve R13", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve R13", gsSymOff, gsMissDB, "-724.07727,299.92276,7.346", "0,135,0", gsMissDB}
},
["models/shinji85/train/rail_curve_r2.mdl"] = {
{myType, "Curve R2", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve R2", gsSymOff, gsMissDB, "-993.86572,130.84471,7.346", "0,165,0", gsMissDB}
},
["models/shinji85/train/rail_curve_r3.mdl"] = {
{myType, "Curve R3", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Curve R3", gsSymOff, gsMissDB, "-927.60797,122.1218,7.346", "0,165,0", gsMissDB}
},
["models/shinji85/train/rail_cx.mdl"] = {
{myType, "Counter X", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Counter X", gsSymOff, gsMissDB, "-362.51361,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_cxfix.mdl"] = {
{myType, "Counter X Fix", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Counter X Fix", gsSymOff, gsMissDB, "-149.48648,0,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_double_4x_crossing.mdl"] = {
{myType, "Crossing Double 4x", gsSymOff, gsMissDB, "0,128,7.346", gsMissDB, gsMissDB},
{myType, "Crossing Double 4x", gsSymOff, gsMissDB, "-512,128,7.346", "0,180,0", gsMissDB},
{myType, "Crossing Double 4x", gsSymOff, gsMissDB, "0,-128,7.346", gsMissDB, gsMissDB},
{myType, "Crossing Double 4x", gsSymOff, gsMissDB, "-512,-128,7.346", "0,180,0", gsMissDB}
},
["models/shinji85/train/rail_double_bumper.mdl"] = {
{myType, "Bumper Double", gsSymOff, gsMissDB, "0,128,7.346", gsMissDB, gsMissDB},
{myType, "Bumper Double", gsSymOff, gsMissDB, "0,-128,7.346", gsMissDB, gsMissDB}
},
["models/shinji85/train/rail_l_switch.mdl"] = {
{myType, "Left Switch", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Left Switch", gsSymOff, gsMissDB, "-1024,0,7.346", "0,180,0", gsMissDB},
{myType, "Left Switch", gsSymOff, gsMissDB, "-966.40515,-128,7.346", "0,195,0", gsMissDB}
},
["models/shinji85/train/rail_r_switch.mdl"] = {
{myType, "Right Switch", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "Right Switch", gsSymOff, gsMissDB, "-1024,0,7.346", "0,180,0", gsMissDB},
{myType, "Right Switch", gsSymOff, gsMissDB, "-966.40515,128,7.346", "0,165,0", gsMissDB}
},
["models/shinji85/train/rail_x_junction.mdl"] = {
{myType, "X Junction", gsSymOff, gsMissDB, "0,0,7.346", gsMissDB, gsMissDB},
{myType, "X Junction", gsSymOff, gsMissDB, "-494.55,0,7.346", "0,180,0", gsMissDB},
{myType, "X Junction", gsSymOff, gsMissDB, "-33.129,-123.63866,7.346", "0,-30,0", gsMissDB},
{myType, "X Junction", gsSymOff, gsMissDB, "-461.42175,123.63649,7.346", "0,150,0", gsMissDB}
}
}
--[[
* This logic statement is needed for reporting the error in the console if the
* process fails.
*
@ bSuccess = SynchronizeDSV(sTable, tData, bRepl, sPref, sDelim)
* sTable > The table you want to sync
* tData > A data table like the one described above
* bRepl > If set to /true/, makes the API replace the repeating models with
these of your addon. This is nice when you are constantly updating your track packs
If set to /false/ keeps the current model in the
database and ignores yours if they are the same file.
* sPref > An export file custom prefix. For synchronizing it must be related to your addon
* sDelim > The delimiter used by the server/client ( default is a tab symbol )
*
@ bSuccess = TranslateDSV(sTable, sPref, sDelim)
* sTable > The table you want to translate to Lua script
* sPref > An export file custom prefix. For synchronizing it must be related to your addon
* sDelim > The delimiter used by the server/client ( default is a tab symbol )
]]--
if(not asmlib.IsEmpty(myPieces)) then
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("PIECES", myPieces, true, myPrefix)) then
myThrowError("Failed to synchronize track pieces")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("PIECES", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your MODELBASE,
* and then for every active point, you must have one array of
* strings and numbers, where the elements match the following data settings.
* {MODELBASE, MODELADD, ENTCLASS, LINEID, POSOFF, ANGOFF, MOVETYPE, PHYSINIT, DRSHADOW, PHMOTION, PHYSLEEP, SETSOLID}
* MODELBASE > This string contains the path to your base /*.mdl/ file the additions are gonna be attached to.
* It is mandatory and taken in pairs with LINEID, it forms the unique identifier of every record.
* When used in /DSV/ mode ( like seen below ) is is used as a hash index.
* MODELADD > This is the /*.mdl/ path of the addition entity. It is mandatory and cannot be disabled.
* ENTCLASS > This is the class of the addition entity. It is mandatory and cannot be disabled.
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* POSOFF > This is the local position vector offset that TA uses to place the addition relative to MODELBASE.
* A NULL, empty, disabled or not available string is treated as taking {0,0,0}.
* ANGOFF > This is the local angle offset that TA uses to place the addition.
* A NULL, empty, disabled or not available string is treated as taking {0,0,0}.
* MOVETYPE > This internally calls /Entity:SetMoveType/ if the database parameter is zero or greater.
* PHYSINIT > This internally calls /Entity:PhysicsInit/ if the database parameter is zero or greater.
* DRSHADOW > This internally calls /Entity:DrawShadow/ if the database parameter is not zero.
* The call evaluates to /true/ for positive numbers and /false/ for negative.
* When the parameter is equal to zero skips the call of /Entity:DrawShadow/
* PHMOTION > This internally calls /PhysObj:EnableMotion/ if the database parameter is not zero on the validated physics object.
* The call evaluates to /true/ for positive numbers and /false/ for negative.
* When the parameter is equal to zero skips the call of /Entity:EnableMotion/
* PHYSLEEP > This internally calls /PhysObj:Sleep/ if the database parameter is grater than zero on the validated physics object.
* When the parameter is equal or less than zero skips the call of /Entity:Sleep/
* SETSOLID > This internally calls /Entity:SetSolid/ if the database parameter is zero or greater.
]]--
local myAdditions = {
["models/shinji85/train/rail_l_switch.mdl"] = {
{"models/shinji85/train/sw_lever.mdl", "buttonswitch", gsSymOff, "-100,-125,0", "0,180,0", -1, -1, -1, 0, -1, -1},
{"models/shinji85/train/rail_l_switcher1.mdl", "prop_dynamic", gsSymOff, gsMissDB, gsMissDB, MOVETYPE_VPHYSICS, SOLID_VPHYSICS, -1, -1, 1, SOLID_VPHYSICS},
{"models/shinji85/train/rail_l_switcher2.mdl", "prop_dynamic", gsSymOff, gsMissDB, gsMissDB, MOVETYPE_VPHYSICS, SOLID_VPHYSICS, -1, 0, -1, SOLID_NONE}
},
["models/shinji85/train/rail_r_switch.mdl"] = {
{"models/shinji85/train/sw_lever.mdl", "buttonswitch", gsSymOff, "-100,125,0", gsMissDB, -1, -1, -1, 0, -1, -1},
{"models/shinji85/train/rail_r_switcher1.mdl", "prop_dynamic", gsSymOff, gsMissDB, gsMissDB, MOVETYPE_VPHYSICS, SOLID_VPHYSICS, -1, -1, 1, SOLID_VPHYSICS},
{"models/shinji85/train/rail_r_switcher2.mdl", "prop_dynamic", gsSymOff, gsMissDB, gsMissDB, MOVETYPE_VPHYSICS, SOLID_VPHYSICS, -1, 0, -1, SOLID_NONE}
}
}
if(not asmlib.IsEmpty(myAdditions)) then
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("ADDITIONS", myAdditions, true, myPrefix)) then
myThrowError("Failed to synchronize track additions")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("ADDITIONS", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
end
--[[
* Create a table and populate it as shown below
* In the square brackets goes your TYPE,
* and then for every active point, you must have one array of
* strings and numbers, where the elements match the following data settings.
* {TYPE, LINEID, NAME}
* TYPE > This is the category under your physical properties are stored internally.
* It is mandatory and taken in pairs with LINEID, it forms the unique identifier of every record.
* When used in /DSV/ mode ( like seen below ) is is used as a hash index.
* LINEID > This is the ID of the point that can be selected for building. They must be
* sequential and mandatory. If provided, the ID must the same as the row index under
* a given model key. Disabling this, makes it use the the index of the current line.
* Use that to swap the active points around by only moving the desired row up or down.
* For the example table definition below, the line ID in the database will be the same.
* NAME > This stores the name of the physical property. It must an actual physical property.
]]--
local myPhysproperties = {}
if(not asmlib.IsEmpty(myPhysproperties)) then
asmlib.LogInstance("SynchronizeDSV start <"..myPrefix..">")
if(not asmlib.SynchronizeDSV("PHYSPROPERTIES", myPhysproperties, true, myPrefix)) then
myThrowError("Failed to synchronize track additions")
else -- You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV start <"..myPrefix..">")
if(not asmlib.TranslateDSV("PHYSPROPERTIES", myPrefix)) then
myThrowError("Failed to translate DSV into Lua") end
asmlib.LogInstance("TranslateDSV done <"..myPrefix..">")
end -- Now we have Lua inserts and DSV
end
asmlib.LogInstance("<<< "..myScript)
else
myThrowError("Failed loading the required module")
end

View File

@ -1,38 +1,39 @@
local DSC = E2Helper.Descriptions
DSC["trackasmlibApplyPhysicalAnchor(e:ennnn)"] = "Anchors the track entity to a base entity with weld 0/1 and no-collide 0/1 no-collide-world 0/1 and force limit."
DSC["trackasmlibApplyPhysicalSettings(e:nnns)"] = "Modifies track entity physical settings with phys-gun enabled, freeze, gravity toggle and surface material behavior"
DSC["trackasmlibAttachAdditions(e:)"] = "Attaches the track entity additions when available"
DSC["trackasmlibAttachBodyGroups(e:s)"] = "Attaches track piece body-groups by providing selection code"
DSC["trackasmlibGenActivePointDSV(e:essns)"] = "Exports the track entity as external database record"
DSC["trackasmlibGenActivePointINS(e:essns)"] = "Exports the track entity as internal database record"
DSC["trackasmlibGetBodyGroups(e:)"] = "Returns the track bodygoup selection list"
DSC["trackasmlibGetSkin(e:)"] = "Returns the track skin selection list"
DSC["trackasmlibGetAdditionsCount(e:)"] = "Returns record additions count by entity"
DSC["trackasmlibGetAdditionsCount(s)"] = "Returns record additions count by model"
DSC["trackasmlibGetAdditionsLine(e:n)"] = "Returns record additions line by entity"
DSC["trackasmlibGetAdditionsLine(sn)"] = "Returns record additions line by model"
DSC["trackasmlibGetName(e:)"] = "Returns record name by entity"
DSC["trackasmlibGetName(s)"] = "Returns record name by model"
DSC["trackasmlibGetOffset(e:ns)"] = "Returns record snap offsets by entity"
DSC["trackasmlibGetOffset(sns)"] = "Returns record snap offsets by model"
DSC["trackasmlibGetPointsCount(e:)"] = "Returns record points count by entity"
DSC["trackasmlibGetPointsCount(s)"] = "Returns record points count by model"
DSC["trackasmlibGetProperty()"] = "Returns the surface property types"
DSC["trackasmlibGetProperty(s)"] = "Returns the surface properties available for a given type"
DSC["trackasmlibGetType(e:)"] = "Returns record track type by entity"
DSC["trackasmlibGetType(s)"] = "Returns record track type by model"
DSC["trackasmlibHasAdditions(e:)"] = "Returns 1 when the record has additions and 0 otherwise by entity"
DSC["trackasmlibHasAdditions(s)"] = "Returns 1 when the record has additions and 0 otherwise by model"
DSC["trackasmlibIsPiece(e:)"] = "Returns 1 when the record is actual track and 0 otherwise by entity"
DSC["trackasmlibIsPiece(s)"] = "Returns 1 when the record is actual track and 0 otherwise by model"
DSC["trackasmlibMakePiece(e:va)"] = "Duplicates the given track using the new position and angle"
DSC["trackasmlibMakePiece(svansnnnn)"] = "Creates new track piece with position angle, mass, skin code and color and aplha as numbers by model"
DSC["trackasmlibSnapEntity(e:vsnnnnva)"] = "Returns track entity snap position and angle array by holder model, point ID, active radius, flatten, ignore type, position offset and angle offset"
DSC["trackasmlibSnapNormal(vasnva)"] = "Returns track surface snap position and angle array by position, angle, model, point ID, position offset and angle offset"
DSC["trackasmlibMakePiece(e:van)"] = "Creates new track piece with position angle, mass by entity"
DSC["trackasmlibMakePiece(e:vans)"] = "Creates new track piece with position angle, mass and skin code by entity"
DSC["trackasmlibMakePiece(e:vansnnnn)"] = "Creates new track piece with position angle, mass, skin code, color and alpha as numbers by entity"
DSC["trackasmlibMakePiece(e:vansv)"] = "Creates new track piece with position angle, mass, skin code and color as vector alpha is 255 by entity"
DSC["trackasmlibMakePiece(svan)"] = "Creates new track piece with position angle, mass by model"
DSC["trackasmlibMakePiece(svans)"] = "Creates new track piece with position angle, mass and skin code by model"
DSC["trackasmlibMakePiece(svansv)"] = "Creates new track piece with position angle, mass, skin code and color as vector alpha is 255 by model"
E2Helper.Descriptions["trackasmlibApplyPhysicalAnchor(e:ennnn)"] = "Anchors the track entity to a base entity with weld 0/1 and no-collide 0/1 no-collide-world 0/1 and force limit."
E2Helper.Descriptions["trackasmlibApplyPhysicalSettings(e:nnns)"] = "Modifies track entity physical settings with phys-gun enabled, freeze, gravity toggle and surface material behavior"
E2Helper.Descriptions["trackasmlibAttachAdditions(e:)"] = "Attaches the track entity additions when available"
E2Helper.Descriptions["trackasmlibAttachBodyGroups(e:s)"] = "Attaches track piece body-groups by providing selection code"
E2Helper.Descriptions["trackasmlibGenActivePointDSV(e:essns)"] = "Exports the track entity as external database record"
E2Helper.Descriptions["trackasmlibGenActivePointINS(e:essns)"] = "Exports the track entity as internal database record"
E2Helper.Descriptions["trackasmlibGetAdditionsCount(e:)"] = "Returns record additions count by entity"
E2Helper.Descriptions["trackasmlibGetAdditionsCount(s)"] = "Returns record additions count by model"
E2Helper.Descriptions["trackasmlibGetAdditionsLine(e:n)"] = "Returns record additions line by entity"
E2Helper.Descriptions["trackasmlibGetAdditionsLine(sn)"] = "Returns record additions line by model"
E2Helper.Descriptions["trackasmlibGetBodyGroups(e:)"] = "Returns the track bodygoup selection list"
E2Helper.Descriptions["trackasmlibGetName(e:)"] = "Returns record name by entity"
E2Helper.Descriptions["trackasmlibGetName(s)"] = "Returns record name by model"
E2Helper.Descriptions["trackasmlibGetOffset(e:ns)"] = "Returns record snap offsets by entity"
E2Helper.Descriptions["trackasmlibGetOffset(sns)"] = "Returns record snap offsets by model"
E2Helper.Descriptions["trackasmlibGetPointsCount(e:)"] = "Returns record points count by entity"
E2Helper.Descriptions["trackasmlibGetPointsCount(s)"] = "Returns record points count by model"
E2Helper.Descriptions["trackasmlibGetProperty()"] = "Returns the surface property types"
E2Helper.Descriptions["trackasmlibGetProperty(s)"] = "Returns the surface properties available for a given type"
E2Helper.Descriptions["trackasmlibGetSkin(e:)"] = "Returns the track skin selection list"
E2Helper.Descriptions["trackasmlibGetType(e:)"] = "Returns record track type by entity"
E2Helper.Descriptions["trackasmlibGetType(s)"] = "Returns record track type by model"
E2Helper.Descriptions["trackasmlibHasAdditions(e:)"] = "Returns 1 when the record has additions and 0 otherwise by entity"
E2Helper.Descriptions["trackasmlibHasAdditions(s)"] = "Returns 1 when the record has additions and 0 otherwise by model"
E2Helper.Descriptions["trackasmlibIsPiece(e:)"] = "Returns 1 when the record is actual track and 0 otherwise by entity"
E2Helper.Descriptions["trackasmlibIsPiece(s)"] = "Returns 1 when the record is actual track and 0 otherwise by model"
E2Helper.Descriptions["trackasmlibMakePiece(e:va)"] = "Duplicates the given track using the new position and angle"
E2Helper.Descriptions["trackasmlibMakePiece(e:van)"] = "Creates new track piece with position angle, mass by entity"
E2Helper.Descriptions["trackasmlibMakePiece(e:vans)"] = "Creates new track piece with position angle, mass and skin code by entity"
E2Helper.Descriptions["trackasmlibMakePiece(e:vansnnnn)"] = "Creates new track piece with position angle, mass, skin code, color and alpha as numbers by entity"
E2Helper.Descriptions["trackasmlibMakePiece(e:vansv)"] = "Creates new track piece with position angle, mass, skin code and color as vector alpha is 255 by entity"
E2Helper.Descriptions["trackasmlibMakePiece(e:vansvn)"] = "Creates new track piece with position angle, mass, skin code and color as vector alpha as number by entity"
E2Helper.Descriptions["trackasmlibMakePiece(svan)"] = "Creates new track piece with position angle, mass by model"
E2Helper.Descriptions["trackasmlibMakePiece(svans)"] = "Creates new track piece with position angle, mass and skin code by model"
E2Helper.Descriptions["trackasmlibMakePiece(svansnnnn)"] = "Creates new track piece with position angle, mass, skin code and color and aplha as numbers by model"
E2Helper.Descriptions["trackasmlibMakePiece(svansv)"] = "Creates new track piece with position angle, mass, skin code and color as vector alpha is 255 by model"
E2Helper.Descriptions["trackasmlibMakePiece(svansvn)"] = "Creates new track piece with position angle, mass, skin code and color as vector alpha by as number model"
E2Helper.Descriptions["trackasmlibSnapEntity(e:vsnnnnva)"] = "Returns track entity snap position and angle array by holder model, point ID, active radius, flatten, ignore type, position offset and angle offset"
E2Helper.Descriptions["trackasmlibSnapNormal(vasnva)"] = "Returns track surface snap position and angle array by position, angle, model, point ID, position offset and angle offset"

View File

@ -2,12 +2,14 @@
local asmlib = trackasmlib
----- Localizing needed functions
local Vector = Vector
local Angle = Angle
local Color = Color
local tonumber = tonumber
local tostring = tostring
local mathClamp = math and math.Clamp
local Vector = Vector
local Angle = Angle
local Color = Color
local tonumber = tonumber
local tostring = tostring
local mathClamp = math and math.Clamp
local cvarsAddChangeCallback = cvars and cvars.AddChangeCallback
local cvarsRemoveChangeCallback = cvars and cvars.RemoveChangeCallback
----- Get extension enabled flag
local anyTrue, anyFalse = 1, 0
@ -22,18 +24,27 @@ local gsToolPrefL = asmlib.GetOpVar("TOOLNAME_PL")
local gsINS = "PIECES:Record({\"%s\", \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\", \"%s\"})"
local gsDSV = "TRACKASSEMBLY_PIECES\t\"%s\"\t\"%s\"\t\"%s\"\t%d\t\"%s\"\t\"%s\"\t\"%s\"\t\"%s\""
----- Refresh callbacks global variables
cvars.AddChangeCallback(gsToolPrefL.."bnderrmod", function()
gsBErr = asmlib.GetAsmConvar("bnderrmod","STR")
end)
--------- CALLBACKS ---------
cvars.AddChangeCallback(gsToolPrefL.."enwiremod", function()
enFlag = asmlib.GetAsmConvar("enwiremod","BUL")
end)
local gsVarName -- This stores current variable name
local gsCbcHash = "_wire" -- This keeps suffix realted to the file
cvars.AddChangeCallback(gsToolPrefL.."maxmass", function()
gnMaxMass = asmlib.GetAsmConvar("maxmass","FLT")
end)
gsVarName = asmlib.GetAsmConvar("enwiremod", "NAM")
cvarsRemoveChangeCallback(gsVarName, gsVarName..gsCbcHash)
cvarsAddChangeCallback(gsVarName, function(sVar, vOld, vNew)
enFlag = ((tonumber(vNew) or 0) ~= 0) end, gsVarName..gsCbcHash)
gsVarName = asmlib.GetAsmConvar("bnderrmod", "NAM")
cvarsRemoveChangeCallback(gsVarName, gsVarName..gsCbcHash)
cvarsAddChangeCallback(gsVarName, function(sVar, vOld, vNew)
gsBErr = tostring(vNew) end, gsVarName..gsCbcHash)
gsVarName = asmlib.GetAsmConvar("maxmass", "NAM")
cvarsRemoveChangeCallback(gsVarName, gsVarName..gsCbcHash)
cvarsAddChangeCallback(gsVarName, function(sVar, vOld, vNew)
local nM = (tonumber(vNew) or 0) -- Zero is invalid mass
gnMaxMass = ((nM > 0) and nM or 1) -- Apply mass clamp
end, gsVarName..gsCbcHash)
--------- EXPORT ---------
@ -78,7 +89,7 @@ e2function array entity:trackasmlibSnapEntity(vector trHitPos , string hdModel
end
__e2setcost(80)
e2function array trackasmlibSnapNormal(vector ucsPos , angle ucsAng , string hdModel,
e2function array trackasmlibSnapNormal(vector ucsPos, angle ucsAng , string hdModel,
number hdPoID, vector ucsOffPos, angle ucsOffAng)
if(not enFlag) then return {} end
local stSpawn = asmlib.GetNormalSpawn(self.player,
@ -93,7 +104,7 @@ e2function array trackasmlibSnapNormal(vector ucsPos , angle ucsAng , strin
return {sPos, sAng}
end
--------- PIECES ----------
--------- PIECES ---------
__e2setcost(30)
e2function number trackasmlibIsPiece(string sModel)
@ -174,7 +185,8 @@ e2function number entity:trackasmlibGetPointsCount()
if(stRec and stRec.Size) then return stRec.Size else return 0 end
end
---------- Additions ------------
------------ ADDITIONS ------------
__e2setcost(30)
e2function number trackasmlibHasAdditions(string sModel)
if(not enFlag) then return anyFalse end
@ -228,7 +240,8 @@ e2function array entity:trackasmlibGetAdditionsLine(number nID)
return getAdditionsLine(this:GetModel(), nID)
end
------------ PhysProperties ------------
------------ PHYSPROPERTIES ------------
__e2setcost(15)
e2function array trackasmlibGetProperty(string sType)
if(not enFlag) then return {} end
@ -245,7 +258,7 @@ e2function array trackasmlibGetProperty()
return stRec
end
----------- PIECE CREATOR --------------
------------ PIECE CREATOR ------------
local function makePiece(oPly, oEnt, sModel, vPos, aAng, nMass, sBgpID, nR, nG, nB, nA)
if(not enFlag) then return nil end
@ -278,6 +291,16 @@ e2function entity entity:trackasmlibMakePiece(vector vPos, angle aAng, number nM
return makePiece(self.player, this, nil, vPos, aAng, nMass, sBgpID, nR, nG, nB, nA)
end
__e2setcost(50)
e2function entity trackasmlibMakePiece(string sModel, vector vPos, angle aAng, number nMass, string sBgpID, vector vColor, number nA)
return makePiece(self.player, nil, sModel, vPos, aAng, nMass, sBgpID, vColor, nil, nil, nA)
end
__e2setcost(50)
e2function entity entity:trackasmlibMakePiece(vector vPos, angle aAng, number nMass, string sBgpID, vector vColor, number nA)
return makePiece(self.player, this, nil, vPos, aAng, nMass, sBgpID, vColor, nil, nil, nA)
end
__e2setcost(50)
e2function entity trackasmlibMakePiece(string sModel, vector vPos, angle aAng, number nMass, string sBgpID, vector vColor)
return makePiece(self.player, nil, sModel, vPos, aAng, nMass, sBgpID, vColor)

View File

@ -1,18 +1,42 @@
return function(sTool, sLimit) local tSet = {} -- Bulgarian
tSet["tool."..sTool..".1" ] = "Сглобява сегментно трасе от предмети"
tSet["tool."..sTool..".left" ] = "Създава/Залепва парче. Задръжте ШИФТ за да натрупате"
tSet["tool."..sTool..".right" ] = "Сменяне на точките на сглобка. Задръжте ШИФТ за на обратно (Бързо: АЛТ + СКРОЛ)"
tSet["tool."..sTool..".right_use" ] = "Отваря менюто с най-често използваните парчета"
tSet["tool."..sTool..".reload" ] = "Премахва парче. Задръжте ШИФТ за да изберете опора"
tSet["tool."..sTool..".workmode.1" ] = "Обикновено създаване/залепяне"
tSet["tool."..sTool..".workmode.2" ] = "Пресичане на активни точки"
tSet["tool."..sTool..".workmode.3" ] = "Линейна сегментна интерполация"
tSet["tool."..sTool..".workmode.4" ] = "Преобръщане спрямо нормалата"
tSet["tool."..sTool..".info.1" ] = "Създава парчета върху картата или ги сглобява едно спрямо друго"
tSet["tool."..sTool..".info.2" ] = "Свързва секциите на трасето със специален сегмент проектиран за това"
tSet["tool."..sTool..".info.3" ] = "Създава непрекъснати трасета преминаващи през дадени контролни точки"
tSet["tool."..sTool..".info.4" ] = "Обръща списъка с избрани обекти спряно дадена начална точка и нормала"
tSet["tool."..sTool..".left.1" ] = "Създаване/залепване на парче. Задръжте SHIFT за натрупване"
tSet["tool."..sTool..".left.2" ] = "Създаване на парче в пресечената точна на лъчите"
tSet["tool."..sTool..".left.3" ] = "Създаване на интерполирана крива на трасе от предмети"
tSet["tool."..sTool..".left.4" ] = "Създаване на огледалните парчета на избрания списък"
tSet["tool."..sTool..".right.1" ] = "Копиране на модела на парчето или отваряне на чести записи"
tSet["tool."..sTool..".right.2" ] = tSet["tool."..sTool..".right.1"]
tSet["tool."..sTool..".right.3" ] = "Създаване на възел за сегментна крива. Задръжте SHIFT да обновите"
tSet["tool."..sTool..".right.4" ] = "Регистриране на предмет в списъка за обръщане. Задръжте SHIFT за смяна на модела"
tSet["tool."..sTool..".right_use.1" ] = "Забранен SCROLL. "..tSet["tool."..sTool..".right.1"]
tSet["tool."..sTool..".right_use.2" ] = tSet["tool."..sTool..".right_use.1"]
tSet["tool."..sTool..".right_use.3" ] = "Генериране на възел от най-близката активна точка на парчето"
tSet["tool."..sTool..".right_use.4" ] = tSet["tool."..sTool..".right_use.1"]
tSet["tool."..sTool..".reload.1" ] = "Премахване на парче трасе. Задръжте SHIFT за да изберете опора"
tSet["tool."..sTool..".reload.2" ] = "Премахване на парче трасе. Задръжте SHIFT изберете релационен лъч"
tSet["tool."..sTool..".reload.3" ] = "Премахване на възел от интерполираната крива. Задръжте SHIFT за да изчистите стека"
tSet["tool."..sTool..".reload.4" ] = "Изчистване списъка от предмети за обръщане. Ако е празен маха парче"
tSet["tool."..sTool..".reload_use.1" ] = "Позволете експорт на данните за да отворите DSV мениджър"
tSet["tool."..sTool..".reload_use.2" ] = tSet["tool."..sTool..".reload_use.1"]
tSet["tool."..sTool..".reload_use.3" ] = tSet["tool."..sTool..".reload_use.1"]
tSet["tool."..sTool..".reload_use.4" ] = tSet["tool."..sTool..".reload_use.1"]
tSet["tool."..sTool..".desc" ] = "Сглобява трасе по което да вървят превозните средства"
tSet["tool."..sTool..".name" ] = "Монтаж на трасе"
tSet["tool."..sTool..".phytype" ] = "Изберете типа на физическите свойства от дадените тук"
tSet["tool."..sTool..".phytype_con" ] = "Тип на повърхността:"
tSet["tool."..sTool..".phytype_def" ] = "<Избери тип на повърхността>"
tSet["tool."..sTool..".phyname" ] = "Изберете името на физическите свойства което да се използва при създаване на трасе като това ще повлияе на повърхностното триене"
tSet["tool."..sTool..".phyname_con" ] = "Име на повърхността:"
tSet["tool."..sTool..".phyname_def" ] = "<Избери име на повърхността>"
tSet["tool."..sTool..".bgskids" ] = "Селекционен код за избор на ТелеснаГрупа/Кожа ID"
tSet["tool."..sTool..".bgskids_con" ] = "ТелеснаГрупа/Кожа:"
tSet["tool."..sTool..".bgskids" ] = "Селекционен код за избор на Телесна-група/Кожа ID"
tSet["tool."..sTool..".bgskids_con" ] = "Телесна-група/Кожа:"
tSet["tool."..sTool..".bgskids_def" ] = "Запишете селекционен код тук. Например 1,0,0,2,1/3"
tSet["tool."..sTool..".mass" ] = "Колко тежко ще бъде създаденото парче"
tSet["tool."..sTool..".mass_con" ] = "Маса на парчето:"
@ -72,9 +96,12 @@
tSet["tool."..sTool..".ghostcnt_con" ] = "Изобразявай парчета сенки"
tSet["tool."..sTool..".engunsnap" ] = "Управлява залепването когато парчето е изпуснато с физическото оръдие на играча"
tSet["tool."..sTool..".engunsnap_con" ] = "Залепване при изпускане"
tSet["tool."..sTool..".type" ] = "Изберете типа трасе коо да използвате като разширите папката"
tSet["tool."..sTool..".type_con" ] = "Тип трасе:"
tSet["tool."..sTool..".category" ] = "Изберете категорията трасе която да използвате като разширите папката"
tSet["tool."..sTool..".category_con" ] = "Категория трасе:"
tSet["tool."..sTool..".workmode" ] = "Сменете тази опция за да изберете различен режим на работа"
tSet["tool."..sTool..".workmode_1" ] = "Обикновено създаване/залепяне"
tSet["tool."..sTool..".workmode_2" ] = "Пресичане на активни точки"
tSet["tool."..sTool..".workmode_con" ] = "Работен режим:"
tSet["tool."..sTool..".pn_export" ] = "Цъкнете за да съхраните базата данни на файл"
tSet["tool."..sTool..".pn_export_lb" ] = "Съхрани DB"
tSet["tool."..sTool..".pn_routine" ] = "Списъкът с редовно използваните ви парчета трасе"

View File

@ -1,4 +1,4 @@
return function(sTool, sLimit) local tSet = {} -- English ( Column "ISO 639-1" )
return function(sTool, sLimit) local tSet = {} -- English ( Column "ISO 639-1" )
------ CONFIGURE TRANSLATIONS ------ https://en.wikipedia.org/wiki/ISO_639-1
-- con >> control # def >> default # hd >> header # lb >> label
tSet["tool."..sTool..".workmode.1" ] = "General spawn/snap pieces"
@ -216,7 +216,7 @@ return function(sTool, sLimit) local tSet = {} -- English ( Column "ISO 639-1" )
tSet["tool."..sTool..".timermode_mem" ] = "Memory manager for SQL table:"
tSet["tool."..sTool..".timermode_cqt" ] = "Cache query timer via record request"
tSet["tool."..sTool..".timermode_obj" ] = "Object timer attached to cache record"
tSet["tool."..sTool..".logfile" ] = "When enabled starts streaming the log into dedicated file"
tSet["tool."..sTool..".logfile" ] = "When enabled starts streaming the log into a dedicated file"
tSet["tool."..sTool..".logfile_con" ] = "Enable logging file"
tSet["tool."..sTool..".logsmax" ] = "Change this to adjust the log streaming maximum output lines written"
tSet["tool."..sTool..".logsmax_con" ] = "Logging lines:"

View File

@ -1,223 +1,223 @@
return function(sTool, sLimit) local tSet = {} -- French
tSet["tool."..sTool..".workmode.1" ] = "Général créer/aligner des pièces" --FIX
tSet["tool."..sTool..".workmode.2" ] = "Point d'intersection actif" --FIX
tSet["tool."..sTool..".workmode.3" ] = "Ajuster des segments de ligne courbés" --FIX
tSet["tool."..sTool..".workmode.4" ] = "Retourner la normale d'une surface" --NEW
tSet["tool."..sTool..".info.1" ] = "Créer des pièces sur la carte ou les aligner relativement entre elles" --NEW
tSet["tool."..sTool..".info.2" ] = "Connecte les sections de piste avec un segment spécialement dédié pour cela" --NEW
tSet["tool."..sTool..".info.3" ] = "Forme une piste continue passant par les points de passage définis" --NEW
tSet["tool."..sTool..".info.4" ] = "Retourne les entités sélectionnées de la liste à travers les origines et normales définis" --NEW
tSet["tool."..sTool..".left.1" ] = "Créer/Aligner une pièce de piste. Maintenir MAJUSCULE pour empiler" --NEW
tSet["tool."..sTool..".left.2" ] = "Créer une pièce de piste au point d'intersection" --NEW
tSet["tool."..sTool..".left.3" ] = "Créer la piste segmentée par interpolation de courbe" --NEW
tSet["tool."..sTool..".left.4" ] = "Créer les pistes retournées de la liste sélectionnée" --NEW
tSet["tool."..sTool..".right.1" ] = "Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes" --NEW
tSet["tool."..sTool..".workmode.1" ] = "Général créer/aligner des pièces"
tSet["tool."..sTool..".workmode.2" ] = "Point d'intersection actif"
tSet["tool."..sTool..".workmode.3" ] = "Ajuster des segments de ligne courbés"
tSet["tool."..sTool..".workmode.4" ] = "Retourner la normale d'une surface"
tSet["tool."..sTool..".info.1" ] = "Créer des pièces sur la carte ou les aligner relativement entre elles"
tSet["tool."..sTool..".info.2" ] = "Connecte les sections de piste avec un segment spécialement dédié pour cela"
tSet["tool."..sTool..".info.3" ] = "Forme une piste continue passant par les points de passage définis"
tSet["tool."..sTool..".info.4" ] = "Retourne les entités sélectionnées de la liste à travers les origines et normales définis"
tSet["tool."..sTool..".left.1" ] = "Créer/Aligner une pièce de piste. Maintenir MAJUSCULE pour empiler"
tSet["tool."..sTool..".left.2" ] = "Créer une pièce de piste au point d'intersection"
tSet["tool."..sTool..".left.3" ] = "Créer la piste segmentée par interpolation de courbe"
tSet["tool."..sTool..".left.4" ] = "Créer les pistes retournées de la liste sélectionnée"
tSet["tool."..sTool..".right.1" ] = "Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes"
tSet["tool."..sTool..".right.2" ] = tSet["tool."..sTool..".right.1"]
tSet["tool."..sTool..".right.3" ] = "Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser" --NEW
tSet["tool."..sTool..".right.4" ] = "Enregistrer l'entité dans la liste à retourner. Maintenir MAJUSCULE pour changer le modèle" --NEW
tSet["tool."..sTool..".right_use.1" ] = "MOLETTE désactivée. "..tSet["tool."..sTool..".right.1"] --NEW
tSet["tool."..sTool..".right.3" ] = "Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser"
tSet["tool."..sTool..".right.4" ] = "Enregistrer l'entité dans la liste à retourner. Maintenir MAJUSCULE pour changer le modèle"
tSet["tool."..sTool..".right_use.1" ] = "MOLETTE désactivée. "..tSet["tool."..sTool..".right.1"]
tSet["tool."..sTool..".right_use.2" ] = tSet["tool."..sTool..".right_use.1"]
tSet["tool."..sTool..".right_use.3" ] = "Générer un nœud depuis le point actif de la pièce de piste la plus proche" --NEW
tSet["tool."..sTool..".right_use.3" ] = "Générer un nœud depuis le point actif de la pièce de piste la plus proche"
tSet["tool."..sTool..".right_use.4" ] = tSet["tool."..sTool..".right_use.1"]
tSet["tool."..sTool..".reload.1" ] = "Retirer une pièce de piste. Maintenir MAJUSCULE pour sélectionner une ancre" --NEW
tSet["tool."..sTool..".reload.2" ] = "Retirer une pièce de piste. Maintenir MAJUSCULE pour sélectionner le rayon de sélection" --NEW
tSet["tool."..sTool..".reload.3" ] = "Retire un nœud de l'interpolation de courbe. Maintenir MAJUSCULE pour vider le tas" --NEW
tSet["tool."..sTool..".reload.4" ] = "Vider la liste des entités à retourner. Retire une pièce si la liste est vide" --NEW
tSet["tool."..sTool..".reload_use.1" ] = "Activer l'exportation de la base de données pour ouvrir le gestionnaire DSV" --NEW
tSet["tool."..sTool..".reload.1" ] = "Retirer une pièce de piste. Maintenir MAJUSCULE pour sélectionner une ancre"
tSet["tool."..sTool..".reload.2" ] = "Retirer une pièce de piste. Maintenir MAJUSCULE pour sélectionner le rayon de sélection"
tSet["tool."..sTool..".reload.3" ] = "Retire un nœud de l'interpolation de courbe. Maintenir MAJUSCULE pour vider le tas"
tSet["tool."..sTool..".reload.4" ] = "Vider la liste des entités à retourner. Retire une pièce si la liste est vide"
tSet["tool."..sTool..".reload_use.1" ] = "Activer l'exportation de la base de données pour ouvrir le gestionnaire DSV"
tSet["tool."..sTool..".reload_use.2" ] = tSet["tool."..sTool..".reload_use.1"]
tSet["tool."..sTool..".reload_use.3" ] = tSet["tool."..sTool..".reload_use.1"]
tSet["tool."..sTool..".reload_use.4" ] = tSet["tool."..sTool..".reload_use.1"]
tSet["tool."..sTool..".desc" ] = "Assemble une piste auquel les véhicules peuvent rouler dessus"
tSet["tool."..sTool..".name" ] = "Assembleur à piste"
tSet["tool."..sTool..".phytype" ] = "Sélectionnez une des propriétés physiques dans la liste"
tSet["tool."..sTool..".phytype_def" ] = "<Sélectionner un TYPE de matériau de surface>"
tSet["tool."..sTool..".phyname" ] = "Sélectionnez une des noms de propriétés physiques à utiliser lorsque qu'une piste sera créée. Ceci va affecter la friction de la surface"
tSet["tool."..sTool..".phyname_con" ] = "Nom de matériau de surface:"
tSet["tool."..sTool..".phyname_def" ] = "<Sélectionner un NOM de matériau de surface>"
tSet["tool."..sTool..".bgskids" ] = "Cette ensemble de code est delimité par une virgule pour chaque Groupes de corps/ID Apparence" --UPDATE
tSet["tool."..sTool..".bgskids_con" ] = "Groupes de corps/Apparence:" --UPDATE
tSet["tool."..sTool..".bgskids_def" ] = "Écrivez le code de sélection ici. Par exemple 1,0,0,2,1/3"
tSet["tool."..sTool..".mass" ] = "À quel point la pièce créée sera lourd"
tSet["tool."..sTool..".mass_con" ] = "Masse de la pièce:"
tSet["tool."..sTool..".model" ] = "Sélectionnez une pièce pour commencer/continuer votre piste avec en étendant un type et en cliquant sur un nœud"
tSet["tool."..sTool..".model_con" ] = "Modèle de la pièce:"
tSet["tool."..sTool..".activrad" ] = "Distance minimum nécessaire pour sélectionner un point actif"
tSet["tool."..sTool..".activrad_con" ] = "Rayon actif:"
tSet["tool."..sTool..".stackcnt" ] = "Nombre maximum de pièces à créer pendant l'empilement"
tSet["tool."..sTool..".stackcnt_con" ] = "Nombre de pièces:"
tSet["tool."..sTool..".angsnap" ] = "Aligner la première pièce créée sur ce degré"
tSet["tool."..sTool..".angsnap_con" ] = "Alignement angulaire:"
tSet["tool."..sTool..".resetvars" ] = "Cliquez pour réinitialiser les valeurs supplémentaires"
tSet["tool."..sTool..".resetvars_con" ] = "V Réinitialiser les variables V"
tSet["tool."..sTool..".nextpic" ] = "Décalage angulaire supplémentaire sur la position initial du tangage"
tSet["tool."..sTool..".nextpic_con" ] = "Angle du tangage:"
tSet["tool."..sTool..".nextyaw" ] = "Décalage angulaire supplémentaire sur la position initial du lacet"
tSet["tool."..sTool..".nextyaw_con" ] = "Angle du lacet:"
tSet["tool."..sTool..".nextrol" ] = "Décalage angulaire supplementaire sur la position initial du roulis"
tSet["tool."..sTool..".nextrol_con" ] = "Angle du roulis:"
tSet["tool."..sTool..".nextx" ] = "Décalage linéaire supplémentaire sur la position initial de X"
tSet["tool."..sTool..".nextx_con" ] = "Décalage en X:"
tSet["tool."..sTool..".nexty" ] = "Décalage linéaire supplémentaire sur la position initial de Y"
tSet["tool."..sTool..".nexty_con" ] = "Décalage en Y:"
tSet["tool."..sTool..".nextz" ] = "Décalage linéaire supplémentaire sur la position initial de Z"
tSet["tool."..sTool..".nextz_con" ] = "Décalage en Z:"
tSet["tool."..sTool..".gravity" ] = "Contrôle la gravité sur la pièce créée"
tSet["tool."..sTool..".gravity_con" ] = "Appliquer la gravité sur la pièce"
tSet["tool."..sTool..".weld" ] = "Créer une soudure entre les pièces/ancres"
tSet["tool."..sTool..".weld_con" ] = "Souder"
tSet["tool."..sTool..".forcelim" ] = "Force nécessaire pour casser la soudure"
tSet["tool."..sTool..".forcelim_con" ] = "Limite de force:"
tSet["tool."..sTool..".ignphysgn" ] = "Ignore la saisie du pistolet physiques sur la pièce créée/alignée/empilé"
tSet["tool."..sTool..".ignphysgn_con" ] = "Ignorer le pistolet physiques"
tSet["tool."..sTool..".nocollide" ] = "Faire en sorte que les pièces/ancres ne puissent jamais entrer en collision"
tSet["tool."..sTool..".nocollide_con" ] = "Pas de collisions"
tSet["tool."..sTool..".nocollidew" ] = "Faire en sorte que les pièces/monde ne puisse jamais entrer en collision"
tSet["tool."..sTool..".nocollidew_con"] = "Pas de collisions avec le monde" --UPDATE
tSet["tool."..sTool..".freeze" ] = "La pièce qui sera créée sera dans un état gelé"
tSet["tool."..sTool..".freeze_con" ] = "Geler la pièce"
tSet["tool."..sTool..".igntype" ] = "Faire ignorer à l'outil les différents types de pièce dès l'alignement/empilement"
tSet["tool."..sTool..".igntype_con" ] = "Ignorer le type de piste"
tSet["tool."..sTool..".spnflat" ] = "La prochaine pièce sera créée/alignée/empilé horizontalement"
tSet["tool."..sTool..".spnflat_con" ] = "Créer horizontalement"
tSet["tool."..sTool..".spawncn" ] = "Créer la pièce vers le centre, sinon, la créer relativement vers le point active choisi"
tSet["tool."..sTool..".spawncn_con" ] = "Partir du centre"
tSet["tool."..sTool..".surfsnap" ] = "Aligne la pièce vers la surface auquel le joueur vise actuellement"
tSet["tool."..sTool..".surfsnap_con" ] = "Aligner vers la surface tracé"
tSet["tool."..sTool..".appangfst" ] = "Appliquer les décalages angulaires seulement sur la première pièce"
tSet["tool."..sTool..".appangfst_con" ] = "Appliquer angulaire en premier"
tSet["tool."..sTool..".applinfst" ] = "Appliquer les décalages linéaires seulement sur la première pièce"
tSet["tool."..sTool..".applinfst_con" ] = "Appliquer linéaire en premier"
tSet["tool."..sTool..".adviser" ] = "Montrer le conseiller de position/angle de l'outil"
tSet["tool."..sTool..".adviser_con" ] = "Montrer le conseiller"
tSet["tool."..sTool..".pntasist" ] = "Montrer l'assistant d'alignement de l'outil"
tSet["tool."..sTool..".pntasist_con" ] = "Montrer l'assistant"
tSet["tool."..sTool..".ghostcnt" ] = "Montrer un aperçu de la pièces compter active"
tSet["tool."..sTool..".ghostcnt_con" ] = "Activer compter l'aperçu de l'outil"
tSet["tool."..sTool..".engunsnap" ] = "Contrôle l'alignement quand la pièce est tombée par le pistolet physique d'un joueur"
tSet["tool."..sTool..".engunsnap_con" ] = "Activer l'alignement par pistolet physique"
tSet["tool."..sTool..".type" ] = "Sélectionnez le type de piste à utiliser en développant le dossier"
tSet["tool."..sTool..".type_con" ] = "Type de piste:"
tSet["tool."..sTool..".category" ] = "Sélectionnez la catégorie de piste à utiliser en développant le dossier"
tSet["tool."..sTool..".category_con" ] = "Catégorie de piste:"
tSet["tool."..sTool..".workmode" ] = "Modifiez cette option pour utiliser différents modes de travail"
tSet["tool."..sTool..".workmode_con" ] = "Mode de travail:"
tSet["tool."..sTool..".pn_export" ] = "Cliquer pour exporter la base de données client dans un fichier"
tSet["tool."..sTool..".pn_export_lb" ] = "Exporter BD"
tSet["tool."..sTool..".pn_routine" ] = "La liste de vos pièces de pistes utilisées fréquemment" --UPDATE
tSet["tool."..sTool..".pn_routine_hd" ] = "Pièces fréquents par:"
tSet["tool."..sTool..".pn_externdb" ] = "Les base de données disponibles pour:"
tSet["tool."..sTool..".pn_externdb_hd"] = "Base de données de:"
tSet["tool."..sTool..".pn_externdb_lb"] = "Clic droit pour les options:"
tSet["tool."..sTool..".pn_externdb_1" ] = "Copier préfixe unique"
tSet["tool."..sTool..".pn_externdb_2" ] = "Copier chemin dossier DSV"
tSet["tool."..sTool..".pn_externdb_3" ] = "Copier le nom de la table"
tSet["tool."..sTool..".pn_externdb_4" ] = "Copier le chemin de la table"
tSet["tool."..sTool..".pn_externdb_5" ] = "Copier l'heure de la table"
tSet["tool."..sTool..".pn_externdb_6" ] = "Copier la taille de la table"
tSet["tool."..sTool..".pn_externdb_7" ] = "Modifier le contenu de la table (Luapad)"
tSet["tool."..sTool..".pn_externdb_8" ] = "Supprimer l'entrée de la base de donnée"
tSet["tool."..sTool..".pn_ext_dsv_lb" ] = "Liste DSV externe"
tSet["tool."..sTool..".pn_ext_dsv_hd" ] = "La liste des base de données DSV sont affichées ici"
tSet["tool."..sTool..".pn_ext_dsv_1" ] = "Préfixe unique de la base de donnée"
tSet["tool."..sTool..".pn_ext_dsv_2" ] = "Active"
tSet["tool."..sTool..".pn_display" ] = "Le modèle de votre pièce de piste est affiché ici"
tSet["tool."..sTool..".pn_pattern" ] = "Écrire un modèle ici et appuyer sur ENTRÉE pour effectuer une recherche"
tSet["tool."..sTool..".pn_srchcol" ] = "Choisir la liste de colonne auquel vous voulez effectuer une recherche sur"
tSet["tool."..sTool..".pn_srchcol_lb" ] = "<Recherche>"
tSet["tool."..sTool..".pn_srchcol_lb1"] = "Modèle"
tSet["tool."..sTool..".pn_srchcol_lb2"] = "Type"
tSet["tool."..sTool..".pn_srchcol_lb3"] = "Nom"
tSet["tool."..sTool..".pn_srchcol_lb4"] = "Fin"
tSet["tool."..sTool..".pn_routine_lb" ] = "Articles de routine"
tSet["tool."..sTool..".pn_routine_lb1"] = "Utilisé"
tSet["tool."..sTool..".pn_routine_lb2"] = "Fin"
tSet["tool."..sTool..".pn_routine_lb3"] = "Type"
tSet["tool."..sTool..".pn_routine_lb4"] = "Nom"
tSet["tool."..sTool..".pn_display_lb" ] = "Affichage pièce"
tSet["tool."..sTool..".pn_pattern_lb" ] = "Écrire modèle"
tSet["Cleanup_"..sLimit ] = "Pièces de piste assemblées"
tSet["Cleaned_"..sLimit ] = "Pistes nettoyées"
tSet["SBoxLimit_"..sLimit ] = "Vous avez atteint la limite des pistes créées!"
tSet["tool."..sTool..".logsmax" ] = "Défini combien de lignes maximum seront envoyées dans le journal" --NEW
tSet["tool."..sTool..".logsmax_con" ] = "Lignes maximum:" --NEW
tSet["tool."..sTool..".logfile" ] = "Force le journal à écrire dans un fichier" --NEW
tSet["tool."..sTool..".logfile_con" ] = "Activer le journal:" --NEW
tSet["tool."..sTool..".sizeucs" ] = "Calibration de l'échelle pour le système de coordonnées affiché" --NEW
tSet["tool."..sTool..".sizeucs_con" ] = "Échelle UCS:" --NEW
tSet["tool."..sTool..".maxstatts" ] = "Défini combien de tentatives d'empilement le script va essayer avant d'échouer" --NEW
tSet["tool."..sTool..".maxstatts_con" ] = "Tentatives d'empilement:" --NEW
tSet["tool."..sTool..".incsnpang" ] = "Défini le pas d'incrémentation angulaire" --NEW
tSet["tool."..sTool..".incsnpang_con" ] = "Pas angulaire:" --NEW
tSet["tool."..sTool..".incsnplin" ] = "Défini le pas d'incrémentation linéaire" --NEW
tSet["tool."..sTool..".incsnplin_con" ] = "Pas linéaire:" --NEW
tSet["tool."..sTool..".enradmenu" ] = "Permet l'utilisation du menu radial du mode de travail" --NEW
tSet["tool."..sTool..".enradmenu_con" ] = "Activer le menu radial" --NEW
tSet["tool."..sTool..".enpntmscr" ] = "Permet de basculer entre les points actifs par défilement de la molette" --NEW
tSet["tool."..sTool..".enpntmscr_con" ] = "Activer le défilement de points" --NEW
tSet["tool."..sTool..".exportdb" ] = "Active l'exportation de la base de données en un grand fichier" --NEW
tSet["tool."..sTool..".exportdb_con" ] = "Activer l'exportation de la base de données" --NEW
tSet["tool."..sTool..".modedb" ] = "Changer ceci pour utiliser un mode de stockage différent pour la base de données (BD)" --NEW
tSet["tool."..sTool..".modedb_con" ] = "Mode de la BD:" --NEW
tSet["tool."..sTool..".devmode" ] = "Active le traçage et débogage" --NEW
tSet["tool."..sTool..".devmode_con" ] = "Activer le mode développeur" --NEW
tSet["tool."..sTool..".maxtrmarg" ] = "Changer ceci pour ajuster le temps entre les tracées de l'outil" --NEW
tSet["tool."..sTool..".maxtrmarg_con" ] = "Marge de la tracée:" --NEW
tSet["tool."..sTool..".maxmenupr" ] = "Changer ceci pour ajuster le nombre de chiffres après la virgule dans le menu" --NEW
tSet["tool."..sTool..".maxmenupr_con" ] = "Séparateur décimal:" --NEW
tSet["tool."..sTool..".maxmass" ] = "Changer ceci pour ajuster la masse maximale pouvant être appliquée sur une pièce" --NEW
tSet["tool."..sTool..".maxmass_con" ] = "Limite de la masse:" --NEW
tSet["tool."..sTool..".maxlinear" ] = "Changer ceci pour ajuster le décalage linéaire maximal sur une pièce" --NEW
tSet["tool."..sTool..".maxlinear_con" ] = "Limite du décalage:" --NEW
tSet["tool."..sTool..".maxforce" ] = "Changer ceci pour ajuster la limite maximale de la force lors des soudures" --NEW
tSet["tool."..sTool..".maxforce_con" ] = "Limite de force:" --NEW
tSet["tool."..sTool..".maxactrad" ] = "Changer ceci pour ajuster le rayon actif maximal pour obtenir l'ID d'un point" --NEW
tSet["tool."..sTool..".maxactrad_con" ] = "Limite du rayon:" --NEW
tSet["tool."..sTool..".maxstcnt" ] = "Changer ceci pour ajuster le maximum de pièces pouvant être créées en mode empilement" --NEW
tSet["tool."..sTool..".maxstcnt_con" ] = "Limite d'empilement:" --NEW
tSet["tool."..sTool..".enwiremod" ] = "Active l'extension pour la puce d'expression Wiremod" --NEW
tSet["tool."..sTool..".enwiremod_con" ] = "Activer wire expression" --NEW
tSet["tool."..sTool..".enctxmenu" ] = "Active le menu contextuel de l'outil dédiée pour les pièces" --NEW
tSet["tool."..sTool..".enctxmenu_con" ] = "Activer le menu contextuel" --NEW
tSet["tool."..sTool..".enctxmall" ] = "Active le menu contextuel de l'outil dédiée pour tous les objets" --NEW
tSet["tool."..sTool..".enctxmall_con" ] = "Activer le menu contextuel pour tous les objets" --NEW
tSet["tool."..sTool..".endsvlock" ] = "Active le verrouillage du fichier de la base de données DSV externe" --NEW
tSet["tool."..sTool..".endsvlock_con" ] = "Activer le verrou de la base de données DSV" --NEW
tSet["tool."..sTool..".curvefact" ] = "Changer ceci pour ajuster le facteur courbe du coefficient tangent" --NEW
tSet["tool."..sTool..".curvefact_con" ] = "Facteur courbe:" --NEW
tSet["tool."..sTool..".curvsmple" ] = "Changer ceci pour ajuster les échantillons pour la courbe d'interpolation" --NEW
tSet["tool."..sTool..".curvsmple_con" ] = "Échantillons courbe:" --NEW
tSet["tool."..sTool..".crvturnlm" ] = "Changer ceci pour ajuster la finesse de la courbure en virage pour le segment" --NEW
tSet["tool."..sTool..".crvturnlm_con" ] = "Courbure en virage:" --NEW
tSet["tool."..sTool..".crvleanlm" ] = "Changer ceci pour ajuster la finesse de la courbure en inclinaison pour le segment" --NEW
tSet["tool."..sTool..".crvleanlm_con" ] = "Courbure en inclinaison:" --NEW
tSet["tool."..sTool..".spawnrate" ] = "Changer ceci pour ajuster la quantité de segments de pistes créés par cycle de serveur" --NEW
tSet["tool."..sTool..".spawnrate_con" ] = "Quantité création:" --NEW
tSet["tool."..sTool..".bnderrmod" ] = "Changer ceci pour définir le comportement quand les clients créent des pièces en dehors des limites de la carte" --NEW
--For the convenience of French people, we'll use cardinal brackets [NUMBER] so they can see clearly which one of the following bounding mode is set from the Spawn Menu.
tSet["tool."..sTool..".bnderrmod_off" ] = "[1] Autoriser l'empilement/création sans restriction" --NEW
tSet["tool."..sTool..".bnderrmod_log" ] = "[2] Refuser l'empilement/création l'erreur est enregistré" --NEW
tSet["tool."..sTool..".bnderrmod_hint" ] = "[3] Refuser l'empilement/création message d'astuce est affiché" --NEW
tSet["tool."..sTool..".bnderrmod_generic"] = "[4] Refuser l'empilement/création message générique est affiché" --NEW
tSet["tool."..sTool..".bnderrmod_error" ] = "[5] Refuser l'empilement/création message d'erreur est affiché" --NEW
tSet["tool."..sTool..".bnderrmod_con" ] = "Sécurité frontière:" --NEW
tSet["tool."..sTool..".maxfruse" ] = "Changer ceci pour ajuster combien de pièces peuvent apparaître dans la fenêtre des pièces fréquentes" --NEW
tSet["tool."..sTool..".maxfruse_con" ] = "Pièces fréquentes:" --NEW
tSet["tool."..sTool..".timermode_ap" ] = "Cliquer ici pour appliquer vos changements au gestionnaire de mémoire SQL" --NEW
tSet["tool."..sTool..".timermode_ap_con" ] = "Appliquer les paramètres de la mémoire" --NEW
tSet["tool."..sTool..".timermode_md" ] = "Changer ceci pour ajuster l'algorithme de la minuterie du gestionnaire de mémoire SQL" --NEW
tSet["tool."..sTool..".timermode_lf" ] = "Changer ceci pour ajuster pendant combien de temps une entrée reste dans le cache" --NEW
tSet["tool."..sTool..".timermode_lf_con" ] = "Durée de vie:" --NEW
tSet["tool."..sTool..".timermode_rd" ] = "Efface les entrées du cache en forçant une valeur nulle" --NEW
tSet["tool."..sTool..".timermode_rd_con" ] = "Activer la suppression des entrées" --NEW
tSet["tool."..sTool..".timermode_ct" ] = "Force l'exécution du recyclage de la mémoire lorsqu'une entrée est supprimée" --NEW
tSet["tool."..sTool..".timermode_ct_con" ] = "Activer le ramasse-miettes" --NEW
tSet["tool."..sTool..".timermode_mem" ] = "Gestionnaire de mémoire de la table SQL:" --NEW
tSet["tool."..sTool..".timermode_cqt" ] = "Mettre en cache la minuterie de la requête via l'enregistrement de la requête" --NEW
tSet["tool."..sTool..".timermode_obj" ] = "Minuterie objet attachée à l'enregistrement du cache" --NEW
tSet["tool."..sTool..".logfile" ] = "Commence la diffusion du journal dans un fichier dédié" --NEW
tSet["tool."..sTool..".logfile_con" ] = "Activer le journal" --NEW
tSet["tool."..sTool..".logsmax" ] = "Changer ceci pour ajuster le flux maximum des lignes écrites par le journal" --NEW
tSet["tool."..sTool..".logsmax_con" ] = "Lignes maximum:" --NEW
tSet["sbox_max"..sLimit ] = "Changer ceci pour ajuster les choses créées par l'outil assembleur à piste sur le serveur" --NEW
tSet["sbox_max"..sLimit.."_con" ] = "Quantité de rails:" --NEW
tSet["tool."..sTool..".desc" ] = "Assemble une piste auquel les véhicules peuvent rouler dessus"
tSet["tool."..sTool..".name" ] = "Assembleur à piste"
tSet["tool."..sTool..".phytype" ] = "Sélectionnez une des propriétés physiques dans la liste"
tSet["tool."..sTool..".phytype_def" ] = "<Sélectionner un TYPE de matériau de surface>"
tSet["tool."..sTool..".phyname" ] = "Sélectionnez une des noms de propriétés physiques à utiliser lorsque qu'une piste sera créée. Ceci va affecter la friction de la surface"
tSet["tool."..sTool..".phyname_con" ] = "Nom de matériau de surface:"
tSet["tool."..sTool..".phyname_def" ] = "<Sélectionner un NOM de matériau de surface>"
tSet["tool."..sTool..".bgskids" ] = "Cette ensemble de code est delimité par une virgule pour chaque Groupes de corps/ID Apparence"
tSet["tool."..sTool..".bgskids_con" ] = "Groupes de corps/Apparence:"
tSet["tool."..sTool..".bgskids_def" ] = "Écrivez le code de sélection ici. Par exemple 1,0,0,2,1/3"
tSet["tool."..sTool..".mass" ] = "À quel point la pièce créée sera lourd"
tSet["tool."..sTool..".mass_con" ] = "Masse de la pièce:"
tSet["tool."..sTool..".model" ] = "Sélectionnez une pièce pour commencer/continuer votre piste avec en étendant un type et en cliquant sur un nœud"
tSet["tool."..sTool..".model_con" ] = "Modèle de la pièce:"
tSet["tool."..sTool..".activrad" ] = "Distance minimum nécessaire pour sélectionner un point actif"
tSet["tool."..sTool..".activrad_con" ] = "Rayon actif:"
tSet["tool."..sTool..".stackcnt" ] = "Nombre maximum de pièces à créer pendant l'empilement"
tSet["tool."..sTool..".stackcnt_con" ] = "Nombre de pièces:"
tSet["tool."..sTool..".angsnap" ] = "Aligner la première pièce créée sur ce degré"
tSet["tool."..sTool..".angsnap_con" ] = "Alignement angulaire:"
tSet["tool."..sTool..".resetvars" ] = "Cliquez pour réinitialiser les valeurs supplémentaires"
tSet["tool."..sTool..".resetvars_con" ] = "V Réinitialiser les variables V"
tSet["tool."..sTool..".nextpic" ] = "Décalage angulaire supplémentaire sur la position initial du tangage"
tSet["tool."..sTool..".nextpic_con" ] = "Angle du tangage:"
tSet["tool."..sTool..".nextyaw" ] = "Décalage angulaire supplémentaire sur la position initial du lacet"
tSet["tool."..sTool..".nextyaw_con" ] = "Angle du lacet:"
tSet["tool."..sTool..".nextrol" ] = "Décalage angulaire supplementaire sur la position initial du roulis"
tSet["tool."..sTool..".nextrol_con" ] = "Angle du roulis:"
tSet["tool."..sTool..".nextx" ] = "Décalage linéaire supplémentaire sur la position initial de X"
tSet["tool."..sTool..".nextx_con" ] = "Décalage en X:"
tSet["tool."..sTool..".nexty" ] = "Décalage linéaire supplémentaire sur la position initial de Y"
tSet["tool."..sTool..".nexty_con" ] = "Décalage en Y:"
tSet["tool."..sTool..".nextz" ] = "Décalage linéaire supplémentaire sur la position initial de Z"
tSet["tool."..sTool..".nextz_con" ] = "Décalage en Z:"
tSet["tool."..sTool..".gravity" ] = "Contrôle la gravité sur la pièce créée"
tSet["tool."..sTool..".gravity_con" ] = "Appliquer la gravité sur la pièce"
tSet["tool."..sTool..".weld" ] = "Créer une soudure entre les pièces/ancres"
tSet["tool."..sTool..".weld_con" ] = "Souder"
tSet["tool."..sTool..".forcelim" ] = "Force nécessaire pour casser la soudure"
tSet["tool."..sTool..".forcelim_con" ] = "Limite de force:"
tSet["tool."..sTool..".ignphysgn" ] = "Ignore la saisie du pistolet physiques sur la pièce créée/alignée/empilé"
tSet["tool."..sTool..".ignphysgn_con" ] = "Ignorer le pistolet physiques"
tSet["tool."..sTool..".nocollide" ] = "Faire en sorte que les pièces/ancres ne puissent jamais entrer en collision"
tSet["tool."..sTool..".nocollide_con" ] = "Pas de collisions"
tSet["tool."..sTool..".nocollidew" ] = "Faire en sorte que les pièces/monde ne puisse jamais entrer en collision"
tSet["tool."..sTool..".nocollidew_con" ] = "Pas de collisions avec le monde"
tSet["tool."..sTool..".freeze" ] = "La pièce qui sera créée sera dans un état gelé"
tSet["tool."..sTool..".freeze_con" ] = "Geler la pièce"
tSet["tool."..sTool..".igntype" ] = "Faire ignorer à l'outil les différents types de pièce dès l'alignement/empilement"
tSet["tool."..sTool..".igntype_con" ] = "Ignorer le type de piste"
tSet["tool."..sTool..".spnflat" ] = "La prochaine pièce sera créée/alignée/empilé horizontalement"
tSet["tool."..sTool..".spnflat_con" ] = "Créer horizontalement"
tSet["tool."..sTool..".spawncn" ] = "Créer la pièce vers le centre, sinon, la créer relativement vers le point active choisi"
tSet["tool."..sTool..".spawncn_con" ] = "Partir du centre"
tSet["tool."..sTool..".surfsnap" ] = "Aligne la pièce vers la surface auquel le joueur vise actuellement"
tSet["tool."..sTool..".surfsnap_con" ] = "Aligner vers la surface tracé"
tSet["tool."..sTool..".appangfst" ] = "Appliquer les décalages angulaires seulement sur la première pièce"
tSet["tool."..sTool..".appangfst_con" ] = "Appliquer angulaire en premier"
tSet["tool."..sTool..".applinfst" ] = "Appliquer les décalages linéaires seulement sur la première pièce"
tSet["tool."..sTool..".applinfst_con" ] = "Appliquer linéaire en premier"
tSet["tool."..sTool..".adviser" ] = "Montrer le conseiller de position/angle de l'outil"
tSet["tool."..sTool..".adviser_con" ] = "Montrer le conseiller"
tSet["tool."..sTool..".pntasist" ] = "Montrer l'assistant d'alignement de l'outil"
tSet["tool."..sTool..".pntasist_con" ] = "Montrer l'assistant"
tSet["tool."..sTool..".ghostcnt" ] = "Montrer un aperçu de la pièces compter active"
tSet["tool."..sTool..".ghostcnt_con" ] = "Activer compter l'aperçu de l'outil"
tSet["tool."..sTool..".engunsnap" ] = "Contrôle l'alignement quand la pièce est tombée par le pistolet physique d'un joueur"
tSet["tool."..sTool..".engunsnap_con" ] = "Activer l'alignement par pistolet physique"
tSet["tool."..sTool..".type" ] = "Sélectionnez le type de piste à utiliser en développant le dossier"
tSet["tool."..sTool..".type_con" ] = "Type de piste:"
tSet["tool."..sTool..".category" ] = "Sélectionnez la catégorie de piste à utiliser en développant le dossier"
tSet["tool."..sTool..".category_con" ] = "Catégorie de piste:"
tSet["tool."..sTool..".workmode" ] = "Modifiez cette option pour utiliser différents modes de travail"
tSet["tool."..sTool..".workmode_con" ] = "Mode de travail:"
tSet["tool."..sTool..".pn_export" ] = "Cliquer pour exporter la base de données client dans un fichier"
tSet["tool."..sTool..".pn_export_lb" ] = "Exporter BD"
tSet["tool."..sTool..".pn_routine" ] = "La liste de vos pièces de pistes utilisées fréquemment"
tSet["tool."..sTool..".pn_routine_hd" ] = "Pièces fréquents par:"
tSet["tool."..sTool..".pn_externdb" ] = "Les base de données disponibles pour:"
tSet["tool."..sTool..".pn_externdb_hd" ] = "Base de données de:"
tSet["tool."..sTool..".pn_externdb_lb" ] = "Clic droit pour les options:"
tSet["tool."..sTool..".pn_externdb_1" ] = "Copier préfixe unique"
tSet["tool."..sTool..".pn_externdb_2" ] = "Copier chemin dossier DSV"
tSet["tool."..sTool..".pn_externdb_3" ] = "Copier le nom de la table"
tSet["tool."..sTool..".pn_externdb_4" ] = "Copier le chemin de la table"
tSet["tool."..sTool..".pn_externdb_5" ] = "Copier l'heure de la table"
tSet["tool."..sTool..".pn_externdb_6" ] = "Copier la taille de la table"
tSet["tool."..sTool..".pn_externdb_7" ] = "Modifier le contenu de la table (Luapad)"
tSet["tool."..sTool..".pn_externdb_8" ] = "Supprimer l'entrée de la base de donnée"
tSet["tool."..sTool..".pn_ext_dsv_lb" ] = "Liste DSV externe"
tSet["tool."..sTool..".pn_ext_dsv_hd" ] = "La liste des base de données DSV sont affichées ici"
tSet["tool."..sTool..".pn_ext_dsv_1" ] = "Préfixe unique de la base de donnée"
tSet["tool."..sTool..".pn_ext_dsv_2" ] = "Active"
tSet["tool."..sTool..".pn_display" ] = "Le modèle de votre pièce de piste est affiché ici"
tSet["tool."..sTool..".pn_pattern" ] = "Écrire un modèle ici et appuyer sur ENTRÉE pour effectuer une recherche"
tSet["tool."..sTool..".pn_srchcol" ] = "Choisir la liste de colonne auquel vous voulez effectuer une recherche sur"
tSet["tool."..sTool..".pn_srchcol_lb" ] = "<Recherche>"
tSet["tool."..sTool..".pn_srchcol_lb1" ] = "Modèle"
tSet["tool."..sTool..".pn_srchcol_lb2" ] = "Type"
tSet["tool."..sTool..".pn_srchcol_lb3" ] = "Nom"
tSet["tool."..sTool..".pn_srchcol_lb4" ] = "Fin"
tSet["tool."..sTool..".pn_routine_lb" ] = "Articles de routine"
tSet["tool."..sTool..".pn_routine_lb1" ] = "Utilisé"
tSet["tool."..sTool..".pn_routine_lb2" ] = "Fin"
tSet["tool."..sTool..".pn_routine_lb3" ] = "Type"
tSet["tool."..sTool..".pn_routine_lb4" ] = "Nom"
tSet["tool."..sTool..".pn_display_lb" ] = "Affichage pièce"
tSet["tool."..sTool..".pn_pattern_lb" ] = "Écrire modèle"
tSet["Cleanup_"..sLimit ] = "Pièces de piste assemblées"
tSet["Cleaned_"..sLimit ] = "Pistes nettoyées"
tSet["SBoxLimit_"..sLimit ] = "Vous avez atteint la limite des pistes créées!"
tSet["tool."..sTool..".logsmax" ] = "Défini combien de lignes maximum seront envoyées dans le journal"
tSet["tool."..sTool..".logsmax_con" ] = "Lignes maximum:"
tSet["tool."..sTool..".logfile" ] = "Force le journal à écrire dans un fichier"
tSet["tool."..sTool..".logfile_con" ] = "Activer le journal:"
tSet["tool."..sTool..".sizeucs" ] = "Calibration de l'échelle pour le système de coordonnées affiché"
tSet["tool."..sTool..".sizeucs_con" ] = "Échelle UCS:"
tSet["tool."..sTool..".maxstatts" ] = "Défini combien de tentatives d'empilement le script va essayer avant d'échouer"
tSet["tool."..sTool..".maxstatts_con" ] = "Tentatives d'empilement:"
tSet["tool."..sTool..".incsnpang" ] = "Défini le pas d'incrémentation angulaire"
tSet["tool."..sTool..".incsnpang_con" ] = "Pas angulaire:"
tSet["tool."..sTool..".incsnplin" ] = "Défini le pas d'incrémentation linéaire"
tSet["tool."..sTool..".incsnplin_con" ] = "Pas linéaire:"
tSet["tool."..sTool..".enradmenu" ] = "Permet l'utilisation du menu radial du mode de travail"
tSet["tool."..sTool..".enradmenu_con" ] = "Activer le menu radial"
tSet["tool."..sTool..".enpntmscr" ] = "Permet de basculer entre les points actifs par défilement de la molette"
tSet["tool."..sTool..".enpntmscr_con" ] = "Activer le défilement de points"
tSet["tool."..sTool..".exportdb" ] = "Active l'exportation de la base de données en un grand fichier"
tSet["tool."..sTool..".exportdb_con" ] = "Activer l'exportation de la base de données"
tSet["tool."..sTool..".modedb" ] = "Changer ceci pour utiliser un mode de stockage différent pour la base de données (BD)"
tSet["tool."..sTool..".modedb_con" ] = "Mode de la BD:"
tSet["tool."..sTool..".devmode" ] = "Active le traçage et débogage"
tSet["tool."..sTool..".devmode_con" ] = "Activer le mode développeur"
tSet["tool."..sTool..".maxtrmarg" ] = "Changer ceci pour ajuster le temps entre les tracées de l'outil"
tSet["tool."..sTool..".maxtrmarg_con" ] = "Marge de la tracée:"
tSet["tool."..sTool..".maxmenupr" ] = "Changer ceci pour ajuster le nombre de chiffres après la virgule dans le menu"
tSet["tool."..sTool..".maxmenupr_con" ] = "Séparateur décimal:"
tSet["tool."..sTool..".maxmass" ] = "Changer ceci pour ajuster la masse maximale pouvant être appliquée sur une pièce"
tSet["tool."..sTool..".maxmass_con" ] = "Limite de la masse:"
tSet["tool."..sTool..".maxlinear" ] = "Changer ceci pour ajuster le décalage linéaire maximal sur une pièce"
tSet["tool."..sTool..".maxlinear_con" ] = "Limite du décalage:"
tSet["tool."..sTool..".maxforce" ] = "Changer ceci pour ajuster la limite maximale de la force lors des soudures"
tSet["tool."..sTool..".maxforce_con" ] = "Limite de force:"
tSet["tool."..sTool..".maxactrad" ] = "Changer ceci pour ajuster le rayon actif maximal pour obtenir l'ID d'un point"
tSet["tool."..sTool..".maxactrad_con" ] = "Limite du rayon:"
tSet["tool."..sTool..".maxstcnt" ] = "Changer ceci pour ajuster le maximum de pièces pouvant être créées en mode empilement"
tSet["tool."..sTool..".maxstcnt_con" ] = "Limite d'empilement:"
tSet["tool."..sTool..".enwiremod" ] = "Active l'extension pour la puce d'expression Wiremod"
tSet["tool."..sTool..".enwiremod_con" ] = "Activer wire expression"
tSet["tool."..sTool..".enctxmenu" ] = "Active le menu contextuel de l'outil dédiée pour les pièces"
tSet["tool."..sTool..".enctxmenu_con" ] = "Activer le menu contextuel"
tSet["tool."..sTool..".enctxmall" ] = "Active le menu contextuel de l'outil dédiée pour tous les objets"
tSet["tool."..sTool..".enctxmall_con" ] = "Activer le menu contextuel pour tous les objets"
tSet["tool."..sTool..".endsvlock" ] = "Active le verrouillage du fichier de la base de données DSV externe"
tSet["tool."..sTool..".endsvlock_con" ] = "Activer le verrou de la base de données DSV"
tSet["tool."..sTool..".curvefact" ] = "Changer ceci pour ajuster le facteur courbe du coefficient tangent"
tSet["tool."..sTool..".curvefact_con" ] = "Facteur courbe:"
tSet["tool."..sTool..".curvsmple" ] = "Changer ceci pour ajuster les échantillons pour la courbe d'interpolation"
tSet["tool."..sTool..".curvsmple_con" ] = "Échantillons courbe:"
tSet["tool."..sTool..".crvturnlm" ] = "Changer ceci pour ajuster la finesse de la courbure en virage pour le segment"
tSet["tool."..sTool..".crvturnlm_con" ] = "Courbure en virage:"
tSet["tool."..sTool..".crvleanlm" ] = "Changer ceci pour ajuster la finesse de la courbure en inclinaison pour le segment"
tSet["tool."..sTool..".crvleanlm_con" ] = "Courbure en inclinaison:"
tSet["tool."..sTool..".spawnrate" ] = "Changer ceci pour ajuster la quantité de segments de pistes créés par cycle de serveur"
tSet["tool."..sTool..".spawnrate_con" ] = "Quantité création:"
tSet["tool."..sTool..".bnderrmod" ] = "Changer ceci pour définir le comportement quand les clients créent des pièces en dehors des limites de la carte"
-- For the convenience of French people, we'll use cardinal brackets [NUMBER] so they can see clearly which one of the following bounding mode is set from the Spawn Menu.
tSet["tool."..sTool..".bnderrmod_off" ] = "[1] Autoriser l'empilement/création sans restriction"
tSet["tool."..sTool..".bnderrmod_log" ] = "[2] Refuser l'empilement/création l'erreur est enregistré"
tSet["tool."..sTool..".bnderrmod_hint" ] = "[3] Refuser l'empilement/création message d'astuce est affiché"
tSet["tool."..sTool..".bnderrmod_generic"] = "[4] Refuser l'empilement/création message générique est affiché"
tSet["tool."..sTool..".bnderrmod_error" ] = "[5] Refuser l'empilement/création message d'erreur est affiché"
tSet["tool."..sTool..".bnderrmod_con" ] = "Sécurité frontière:"
tSet["tool."..sTool..".maxfruse" ] = "Changer ceci pour ajuster combien de pièces peuvent apparaître dans la fenêtre des pièces fréquentes"
tSet["tool."..sTool..".maxfruse_con" ] = "Pièces fréquentes:"
tSet["tool."..sTool..".timermode_ap" ] = "Cliquer ici pour appliquer vos changements au gestionnaire de mémoire SQL"
tSet["tool."..sTool..".timermode_ap_con" ] = "Appliquer les paramètres de la mémoire"
tSet["tool."..sTool..".timermode_md" ] = "Changer ceci pour ajuster l'algorithme de la minuterie du gestionnaire de mémoire SQL"
tSet["tool."..sTool..".timermode_lf" ] = "Changer ceci pour ajuster pendant combien de temps une entrée reste dans le cache"
tSet["tool."..sTool..".timermode_lf_con" ] = "Durée de vie:"
tSet["tool."..sTool..".timermode_rd" ] = "Efface les entrées du cache en forçant une valeur nulle"
tSet["tool."..sTool..".timermode_rd_con" ] = "Activer la suppression des entrées"
tSet["tool."..sTool..".timermode_ct" ] = "Force l'exécution du recyclage de la mémoire lorsqu'une entrée est supprimée"
tSet["tool."..sTool..".timermode_ct_con" ] = "Activer le ramasse-miettes"
tSet["tool."..sTool..".timermode_mem" ] = "Gestionnaire de mémoire de la table SQL:"
tSet["tool."..sTool..".timermode_cqt" ] = "Mettre en cache la minuterie de la requête via l'enregistrement de la requête"
tSet["tool."..sTool..".timermode_obj" ] = "Minuterie objet attachée à l'enregistrement du cache"
tSet["tool."..sTool..".logfile" ] = "Commence la diffusion du journal dans un fichier dédié"
tSet["tool."..sTool..".logfile_con" ] = "Activer le journal"
tSet["tool."..sTool..".logsmax" ] = "Changer ceci pour ajuster le flux maximum des lignes écrites par le journal"
tSet["tool."..sTool..".logsmax_con" ] = "Lignes maximum:"
tSet["sbox_max"..sLimit ] = "Changer ceci pour ajuster les choses créées par l'outil assembleur à piste sur le serveur"
tSet["sbox_max"..sLimit.."_con" ] = "Quantité de rails:"
return tSet end

View File

@ -1,9 +1,7 @@
return function(sTool, sLimit) local tSet = {} -- Japanese
tSet["tool."..sTool..".1" ] = "区間的な線路を組み立て"
tSet["tool."..sTool..".left" ] = "線路の部分がスポーンする。SHIFT押すながら部分が増えるスタック"
tSet["tool."..sTool..".right" ] = "組み立てポイントを変わる。SHIFT押すながら方向を逆にして。ショートカット ALT + SCROLL"
tSet["tool."..sTool..".right_use" ] = "よく使った線路部分メニュ"
tSet["tool."..sTool..".reload" ] = "線路部分を外す。SHIFT押すながらアンカーを選択して"
tSet["tool."..sTool..".workmode.1" ] = "通常部分のスポーン/スナップ"
tSet["tool."..sTool..".workmode.2" ] = "アクティブポイントの交差点"
tSet["tool."..sTool..".workmode.3" ] = "曲線線分フィッティング"
tSet["tool."..sTool..".desc" ] = "乗り物が走る線路を組み立てる"
tSet["tool."..sTool..".name" ] = "線路の組み立て"
tSet["tool."..sTool..".phytype" ] = "一覧済みしたものの物性タイプを選択して"
@ -72,28 +70,31 @@
tSet["tool."..sTool..".ghostcnt_con" ] = "ドローホルダーゴースト"
tSet["tool."..sTool..".engunsnap" ] = "プレイヤー物理銃が落とした部分のスナップを管理する"
tSet["tool."..sTool..".engunsnap_con" ] = "物理銃スナップを可能にする"
tSet["tool."..sTool..".type" ] = "フォルダを展開して、使用するトラックタイプを選択します"
tSet["tool."..sTool..".type_con" ] = "トラックタイプ:"
tSet["tool."..sTool..".category" ] = "フォルダを展開して、使用するトラックカテゴリを選択します"
tSet["tool."..sTool..".category_con" ] = "トラックカテゴリ:"
tSet["tool."..sTool..".workmode" ] = "稼働モード変更の設定"
tSet["tool."..sTool..".workmode_1" ] = "通常部分のスポーン/スナップ"
tSet["tool."..sTool..".workmode_2" ] = "アクティブポイントの交差点"
tSet["tool."..sTool..".workmode_con" ] = "稼働モ:"
tSet["tool."..sTool..".pn_export" ] = "クリックでクライアントデータベースをファイルにエクスポート"
tSet["tool."..sTool..".pn_export_lb" ] = "DB エクスポート"
tSet["tool."..sTool..".pn_routine" ] = "よく使った線路部分表"
tSet["tool."..sTool..".pn_routine_hd" ] = "よく使った部分:"
tSet["tool."..sTool..".pn_externdb" ] = "The external databases available for:"
tSet["tool."..sTool..".pn_externdb_hd"] = "External databases by:"
tSet["tool."..sTool..".pn_externdb_lb"] = "Right click for options:"
tSet["tool."..sTool..".pn_externdb_1" ] = "Copy unique prefix"
tSet["tool."..sTool..".pn_externdb_2" ] = "Copy DSV folder"
tSet["tool."..sTool..".pn_externdb_3" ] = "Copy table nick"
tSet["tool."..sTool..".pn_externdb_4" ] = "Copy table path"
tSet["tool."..sTool..".pn_externdb_5" ] = "Copy table time"
tSet["tool."..sTool..".pn_externdb_6" ] = "Copy table size"
tSet["tool."..sTool..".pn_externdb_7" ] = "Edit items (Luapad)"
tSet["tool."..sTool..".pn_externdb_8" ] = "Delete database entry"
tSet["tool."..sTool..".pn_ext_dsv_lb" ] = "Extrernal DSV list"
tSet["tool."..sTool..".pn_ext_dsv_hd" ] = "Extrernal DSV databases list is displayed here"
tSet["tool."..sTool..".pn_ext_dsv_1" ] = "Database unique prefix"
tSet["tool."..sTool..".pn_ext_dsv_2" ] = "Active"
tSet["tool."..sTool..".pn_externdb" ] = "使用可能外部データベース:"
tSet["tool."..sTool..".pn_externdb_hd"] = "外部データベース:"
tSet["tool."..sTool..".pn_externdb_lb"] = "右クリックでオプション:"
tSet["tool."..sTool..".pn_externdb_1" ] = "特異プレフィックスをコピーして"
tSet["tool."..sTool..".pn_externdb_2" ] = "DSVフォルダーをコピーして"
tSet["tool."..sTool..".pn_externdb_3" ] = "テーブルニックネームをコピーして"
tSet["tool."..sTool..".pn_externdb_4" ] = "テーブルパスをコピーして"
tSet["tool."..sTool..".pn_externdb_5" ] = "テーブルタイムをコピーして"
tSet["tool."..sTool..".pn_externdb_6" ] = "テーブルサイズをコピーして"
tSet["tool."..sTool..".pn_externdb_7" ] = "アイテムを編集して(Luapad)"
tSet["tool."..sTool..".pn_externdb_8" ] = "データベースエントリを消して"
tSet["tool."..sTool..".pn_ext_dsv_lb" ] = "外部DSVリスト"
tSet["tool."..sTool..".pn_ext_dsv_hd" ] = "外部DSVデータベースリストはここに見せる"
tSet["tool."..sTool..".pn_ext_dsv_1" ] = "データベース特異プレッフィクス"
tSet["tool."..sTool..".pn_ext_dsv_2" ] = "アクティブ"
tSet["tool."..sTool..".pn_display" ] = "プレーやの線路部分ここに映る"
tSet["tool."..sTool..".pn_pattern" ] = "ここにパターンを書くとサーチするためにENTERを押して"
tSet["tool."..sTool..".pn_srchcol" ] = "サーチするコラムを選択し"

View File

@ -1,18 +1,18 @@
return function(sTool, sLimit) local tSet = {} -- Russian
tSet["tool."..sTool..".1" ] = "Собрать сегментированную дорогу из предметов"
tSet["tool."..sTool..".left" ] = "Создает/Прилепает кусок. Удерживайте СДВИГ чтобы нагромождали"
tSet["tool."..sTool..".right" ] = "Изменение точки сборки. Удерживайте СДВИГ чтобы реверс (Быстро: АЛТ + ПРОКРУТКИ)"
tSet["tool."..sTool..".right_use" ] = "Открывается меню с наиболее часто используемых кусков"
tSet["tool."..sTool..".reload" ] = "Убрать кусок. Удерживайте СДВИГ чтобы выбрать якорь"
tSet["tool."..sTool..".workmode.1" ] = "Общее создание/прилепание куски"
tSet["tool."..sTool..".workmode.2" ] = "Пересечение активной точки"
tSet["tool."..sTool..".workmode.3" ] = "Кривой отрезок линии фитинг"
tSet["tool."..sTool..".workmode.4" ] = "Нормаль поверхности перевернуть"
tSet["tool."..sTool..".desc" ] = "Создает дорогу для транспортных средств"
tSet["tool."..sTool..".name" ] = "Сборка дороги"
tSet["tool."..sTool..".phytype" ] = "Выберите тип физических свойств из тех которые перечислены здесь"
tSet["tool."..sTool..".phytype_con" ] = "Тип поверхности:"
tSet["tool."..sTool..".phytype_def" ] = "<Выберите ТИП поверхности>"
tSet["tool."..sTool..".phyname" ] = "Выберите имя физических свойств которые могут быть использованы при создании дороги так как это повлияет на поверхностное трение"
tSet["tool."..sTool..".phyname_con" ] = "Имя поверхности:"
tSet["tool."..sTool..".phyname_def" ] = "<Выберите ИМЯ поверхности>"
tSet["tool."..sTool..".bgskids" ] = "Код выбора через запятую для ГруппаТела/Кожа ID"
tSet["tool."..sTool..".bgskids_con" ] = "ГруппаТела/Кожа:"
tSet["tool."..sTool..".bgskids" ] = "Код выбора через запятую для Группаела/Кожа ID"
tSet["tool."..sTool..".bgskids_con" ] = "Группаела/Кожа:"
tSet["tool."..sTool..".bgskids_def" ] = "Написать код выбора здесь. Например 1,0,0,2,1/3"
tSet["tool."..sTool..".mass" ] = "Как тяжелый кусок создал будет"
tSet["tool."..sTool..".mass_con" ] = "Масса куска:"
@ -72,9 +72,12 @@
tSet["tool."..sTool..".ghostcnt_con" ] = "Нарисовать подсчет кусок-тень"
tSet["tool."..sTool..".engunsnap" ] = "Управляет приклеивание когда кусок выпущен физической пушки пользователя"
tSet["tool."..sTool..".engunsnap_con" ] = "Приклеивать выпуском"
tSet["tool."..sTool..".type" ] = "Выберите типа дороги для использования путем расширения папки"
tSet["tool."..sTool..".type_con" ] = "Тип дороги:"
tSet["tool."..sTool..".category" ] = "Выберите категорию дороги для использования путем расширения папки"
tSet["tool."..sTool..".category_con" ] = "Категория дороги:"
tSet["tool."..sTool..".workmode" ] = "Измените эту опцию чтобы использовать другой рабочий режим"
tSet["tool."..sTool..".workmode_1" ] = "Общее создание/прилепание куски"
tSet["tool."..sTool..".workmode_2" ] = "Пересечение активной точки"
tSet["tool."..sTool..".workmode_con" ] = "Рабочий режим:"
tSet["tool."..sTool..".pn_export" ] = "Нажмите чтобы сохранить файл базы данных"
tSet["tool."..sTool..".pn_export_lb" ] = "Экспорт БД"
tSet["tool."..sTool..".pn_routine" ] = "Список регулярно используемых кусков дороги"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

237
readme.md
View File

@ -34,7 +34,12 @@ Also, another great achievement progress is in place, so 10x guys for
[helping me, help you, help us all](https://www.youtube.com/watch?v=2TZyb0n2DAw) !
#### What kind of features does this script has?
* General convar [factory reset](https://youtu.be/3Ws6Jh3JUew?t=2051) can be easily triggered by the server admins
* Convar tweaks is accessible via [dedicated in-game manipulation panel](https://youtu.be/3Ws6Jh3JUew?t=56)
* Context menu for direct track entity [value export and manipulation][ref-value-exp]
* Optional [flip-over mode called from spawning/snapping](https://youtu.be/3Ws6Jh3JUew?t=2146) for quickly flip the anchor across
* Track segment [flip over mode for mirroring](https://youtu.be/3Ws6Jh3JUew?t=1358) already created [loops and curves](https://youtu.be/3Ws6Jh3JUew?t=1722)
* Track segment [curve node interpolation](https://youtu.be/3Ws6Jh3JUew?t=200) for building custom track layouts
* Track curve fitting alignment based on [ray intersection for precise piece layout][ref-vid-inters]
* [Extendible database][ref-dbext] via [text file][ref-text-file] or a [lua script][ref-lua-script]
* [Extendible database][ref-dbext] via [load list][ref-load-list] and [list prefixes][ref-list-pref]
@ -79,6 +84,14 @@ adjusting the next active point for the track stacking option.
This will affect what point is chosen when you continue the track you build.
The current and next active points will not be the same.
#### I am scrolling and the point mouse scroll is enabled. Why is the track end not switched?
Sometimes selecting last weapon is bind to the `KEY_LALT` ( Def: `LALT` )
button by default. If that condition is present for you, the mouse scroll track piece
selection will not work. If you insist of using the mouse scroll and I don't blame you,
because it's faster and much convenient, just unbind the `KEY_LALT` ( Def: `LALT` ) button
via `unbind alt` ( `unbind <key_binded>` ). That way the game will no longer process
alt with priority to last weapon switch.
#### How do I use the old way for switching between the active points ?
There is this variable `trackassembly_enpntmscr` and as its name suggests
it controls the ***enable end-point mouse scroll***. Set it to `1` if you want
@ -96,28 +109,29 @@ the primary position flag `applinfst ( Apply linear first )` or switch
the origin angle with the ray direction angle by using primary angle flag
`appangfst ( Apply angular first )`. In this working mode the angular and linear offsets adjust the
piece offsets relative to the ray intersection position where the trace and relation rays
meet. Press `ATTACK1` ( Def: Left click ) if you are happy with where
meet. Press `ATTACK1` ( Def: `Left Mouse Button` ) if you are happy with where
the ghost is located and where the spawn piece will go at.
#### The tool has too few track varieties. Can you make the pieces resizable ?
In sorta yes, however, there is no way to add this feature natively and so far I did not found a decent method,
which will not potentially break the entire game. While resizing props client-side is quite easy, in the server,
this task is very hard, close to impossible. The gmod API does not provide an ellegant solution to this,
this task is very hard, close to impossible. The gmod API does not provide an elegant solution to this,
which meets the real-time performance requirements. Resizing track curves is by far the most complex task of this
sort as far as evert single piece is conserned. If you take the track width in consideratoion, the resizing method
sort as far as every single piece is concerned. If you take the track width in consideration, the resizing method
must not just select `X`, `Y` or `Z` axes, because the piece will get distortions along the curve ( ex. For `90`
degree curves streching by `X` will increase first point lenght, however, it will also adjust the second point width )
degree curves stretching by `X` will increase first point length, however, it will also adjust the second point width )
In Gmod there is this [`PhysicsInitConvex`][ref-resz-api] API that does
just that, but the spawning will take a very long time considering the amount it tates to resize every polygon on the
server. When the track is spawned outside the map bounds it will immidiately crash the game.
Thus, I beleve that stacking two or more tracks is always better than resizing a prop !
just that, but the spawning will take a very long time considering the amount it takes to resize every polygon on the
server. When the track is spawned outside the map bounds it will immediately crash the game.
Thus, I believe that stacking two or more tracks is always better than resizing a prop !
#### How can I use switchers ? I can't seem to make them work.
Every addon has its own way for dealing with the switchers. Others that are not listed here do not
have dedicated track switchers, so to switch them you must use two track pieces inside of each other.
have dedicated track switchers, so to switch them you must use two track pieces inside each other.
Swap their solidness around using the [fading door tool][ref-fade-door],
so when one is solid a.k.a `CLOSED` and you can't pass trough it, the other must be no-collided to all `OPENED`. Therefore the
wheels of the train will follow only the track that is currently set being solid with fading door `CLOSED` function state:
so when one is solid a.k.a. `CLOSED` and you can't pass through it, the other must be no-collided
to all `OPENED`. Therefore, the wheels of the train will follow only the track that is currently
set being solid with fading door `CLOSED` function state:
1. Dedicated [entity][ref-entity] addition like a lever you must press with your `USE` key
* [Shinji85's Rails](https://www.youtube.com/watch?v=cHhf83w-YNM)
2. Dedicated switcher [entity][ref-entity] class you must press
@ -136,40 +150,82 @@ wheels of the train will follow only the track that is currently set being solid
* `Battleship's abandoned rails`
#### How to use the tool control options when building a track ?
1. Pressing `ATTACK1` ( Def: Left mouse button )
* When you are looking at the world the piece will just be spawned on the map.
* When you are looking at one of track piece's pre-defined active points
1. Pressing `ATTACK1` ( Def: `Left Mouse Button` )
* `CURVE`: Spawns server task to handle segmented curve interpolation on condition:
1. The holder piece must be valid database entry.
2. Two or more vertices must be present on the curve stack.
3. The holder piece must have more than one active points.
4. The holder piece start point data must persist in the cache
5. The holder piece end point data must persist in the cache
6. The holder piece active points distance must be positive
7. The holder piece must not be a curving track.
8. The holder piece must not be a U-turn track.
9. The holder piece must not be a ramp track.
* `OVER` : Flips over every entity that is a track present in the flip-over
list where for `flip normal` uses trace normal and for `flip origin` trace `OBB`.
* When you are looking at the world the piece will be spawned on the map.
* When you are looking at one of track piece's predefined active points
* Will snap the piece that you're holding to the trace one.
* If the traced piece's type is different than the holder piece's type,
please check `Ignore track type` check-box.
* If the traced piece's type is different from the holder piece's type,
please check `Ignore track type` check-box to snap it.
* If `Enable advisor` is checked, a coordinate system will appear,
marking the origin position on the traced piece
marking the origin position on the traced piece visible.
* If `Ghosts count` is larger than zero ghosted track pieces will be
rendered to assist you with the building.
* When you are not looking at one of track piece's pre-defined active points,
* Pressing `USE` ( Def: E ) Applies the physical settings/properties on a piece.
* If not, you will update the piece's bodygroups/skin.
2. Pressing `SPEED` ( Def: `SHIFT` ) + `ATTACK1` ( Def: Left mouse button )
* Will stack as many pieces as shown by the slider `Pieces count`.
3. Pressing `ATTACK2` ( Def: Right mouse button )
* When pointing to the world will open the `Frequent pieces by <PLAYER_NAME_HERE>` frame,
* When not looking at trace entity piece predefined active point
will update the bodygroup/skin according to `trackassembly_bgskids`.
2. Pressing `ATTACK1` ( Def: `Left Mouse Button` ) + `USE` ( Def: `E` )
* When not looking at trace entity piece predefined active point
will update the trace entity physical settings and constraints ( Based on anchor ).
3. Pressing `ATTACK1` ( Def: `Left Mouse Button` ) + `SPEED` ( Def: `SHIFT` )
* `SNAP` : Stack pieces according to `trackassembly_stackcnt` ( `Pieces count` ):
1. The value in `trackassembly_stackcnt` must be positive.
2. The database record of the holder model must have at least two active points.
* `OVER` : Flips over every entity that is a track present in the flip-over
list where `flip normal` and `flip origin` are extracted from active
point. Ray intersection position between the two selected points can be
utilized for `flip origin` and the closest active point normal is utilized
for `flip normal` when the trace entity model is equal to the holder model.
* When you are not looking at one of track piece's predefined active points
will flip over the anchor entity relative to the trace normal vector as
`flip normal` and trace entity `OBB` center as `flip origin`.
4. Pressing `ATTACK2` ( Def: `Right Mouse Button` )
* `CURVE`: Inserts a curve node on the stack.
* `OVER` : Inserts the trace entity ID to the flip over stack.
* When pointing to the world will open the `Frequent pieces by <PLAYER_NAME>` frame,
from where you can select your routine pieces to use again in the track building process
as well as [searching in the table][ref-search] either by `MODEL`, `TYPE`, `NAME`, `LAST_USED`
to obtain the piece you want to continue your track with.
5. Pressing `ATTACK2` ( Def: `Right Mouse Button` ) + `USE` ( Def: `E` )
* When `trackassembly_enpntmscr` is disabled, you have to press this,
for changing the active track points using the old method of selection.
6. Pressing `ATTACK2` ( Def: `Right Mouse Button` ) + `SPEED` ( Def: `SHIFT` )
* `CURVE`: Updates the hit closest curve node on the stack.
* When pointing to a prop will select the trace model to use as a piece for building a track.
* **Note: When `trackassembly_enpntmscr` is disabled, you have to press `USE` ( Def: `E` )
to run these, otherwise just the active track points will be switched using the old
method of selection.**
4. Pressing `RELOAD` ( Def: `R` )
* When pressing it on the world will clear the tool's selected prop to attach all the
track pieces to ( anchor / relation ).
* **Note: When `trackassembly_devmode` is enabled, will update the log control options.**
* **Note: When `trackassembly_exportdb` is enabled and `USE` ( Def: `E` ) is pressed, the
external database manager menu will be opened to confugure database pefixes, otherwise
will export the [server database][ref-sv-db] [`sv_`][ref-dsv-dir] as a file
in [DSV format][ref-dsv-dir].**
* When pressing it on the trace prop will set it as an anchor/relation for other pieces spawned
to be constrained to.
7. Pressing `ATTACK2` ( Def: `Right Mouse Button` ) + `DUCK` ( Def: `CTRL` )
* When `trackassembly_enpntmscr` is disabled, you have to press this,
for changing the next active point by using the old method of selection.
8. Pressing `ATTACK2` ( Def: `Right Mouse Button` ) + `SPEED` ( Def: `SHIFT` ) + `USE` ( Def: `E` )
* `CURVE`: Utilizes the trace entity active point as a curve node.
9. Pressing `RELOAD` ( Def: `R` )
* When trace entity is a valid piece will just remove it.
* When `trackassembly_devmode` is enabled, will update the log control options.
10. Pressing `RELOAD` ( Def: `R` ) + `USE` ( Def: `E` )
* When pressing on the world and `trackassembly_exportdb` is enabled, the external database
manager menu will be opened to configure database prefixes, otherwise will export
the [server database][ref-sv-db] [`sv_`][ref-dsv-dir] as a file in [DSV format][ref-dsv-dir].
11. Pressing `RELOAD` ( Def: `R` ) + `SPEED` ( Def: `SHIFT` )
* When pressing it on the world will clear the tool's selected operational track
pieces which are used for various things. Works differently based on the mode selected.
* `SNAP` : Clears the `anchor` entity which all new pieces will be automatically constrained to.
* `CROSS`: Clears the `relation` ray defined for using active point intersection between two pieces.
* `CURVE`: Clears all nodes defined for using the curving algorithm. Otherwise clears the last point on the stack.
* `OVER` : Clears the stack variable holder for all the flipped over entity base IDs
* When pressing it on the trace prop will set it as the tool's selected operational track
* `SNAP` : Selects the trace entity for using it as an anchor.
* `CROSS`: Selects the closest trace active point origin to use it as relation ray.
* `CURVE`: Clears all nodes defined for using the curving algorithm. Otherwise clears the last point on the stack.
* `OVER` : Clears the stack variable holder for all the flipped over entity base IDs
#### Context menu pieces manipulation
The [context menu][ref-ctx-menu]
@ -195,66 +251,65 @@ Explanation of each control option is given in the summary below.
its motion. The piece stays in the same position until external fore is applied on it.
This is good when you want your track bridge to have fake non-welded pieces.
If the option is enabled, click it again to disable it or the other way around.
7. `Apply piece gravity` option controlls the gravity affecting the selected track piece.
7. `Apply piece gravity` option controls the gravity affecting the selected track piece.
If the option is enabled, click it again to disable it or the other way around.
8. `Weld` option controlls the created welds on a piece. You must select an anchor to weld
8. `Weld` option controls the created welds on a piece. You must select an anchor to weld
the right clicked piece to, when you are in regular `SNAP` mode displayed on the tool screen.
when the anchor is not selected or it is invalid, a message will be displayed to warn you.
You can also remove welds by holding `SPEED` ( Def: SHIFT ) and clicking the option.
The amount of welds will be displayed next to the optoion control.
9. `NoCollide` option controlls the created collides on a piece. You must select an anchor
You can also remove welds by holding `SPEED` ( Def: `SHIFT` ) and clicking the option.
The amount of welds will be displayed next to the option control.
9. `NoCollide` option controls the created collides on a piece. You must select an anchor
to nocollide the right clicked piece to, when you are in regular `SNAP` mode displayed on
the tool screen. When the anchor is not selected or it is invalid, a message will be displayed
to warn you. You can also remove nocollides by holding `SPEED` ( Def: SHIFT ) and clicking
the option. The amount of nocollides will be displayed next to the optoion control.
9. `NoCollide world` option controlls the created world collides on a piece. The constraint
acnchor in this case is the world itself. Click on the option to create no collide world
constrant or by holding `SPEED` ( Def: SHIFT ) and click to remove it. The flag of
of the constraint will be displayed in the menu control option. The value will be `true`
if there is a still a no-collide world and [`phys_ragdollconstraint`][ref-rag-constr] between
the piece and the world. If it stays in `true` after you remove it, that means there are more
than one constraints remaining connected to the trace.
to warn you. You can also remove nocollides by holding `SPEED` ( Def: `SHIFT` ) and clicking
the option. The amount of nocollides will be displayed next to the option control.
9. `NoCollide world` option controls the created world collides on a piece. The constraint
anchor in this case is the world itself. Click on the option to create no collide world
constraint or by holding `SPEED` ( Def: `SHIFT` ) and click to remove it. The flag of
the constraint will be displayed in the menu control option. The value will be `true`
if there is a still a no-collide world and [`phys_ragdollconstraint`][ref-rag-constr]
between the piece and the world. If it stays in `true` after you remove it, that means
there are more constraints remaining connected to the trace.
#### How to use the tool control panel and what function does each item have ?
1. `Track surface grip modifier` combo box is used if you want to obtain different
grip behavior for a wheel-powered/sliding train,
you must use the surface material drop-down menu combo boxes as you select first
`TYPE` from the top one to setup the group of properties you want to apply then
`NAME`, to select the actual surface material you want applied.
grip behavior for a wheel-powered/sliding train,
you must use the surface material drop-down menu combo boxes as you select first
`TYPE` from the top one to chose the group of properties you want to apply and then
`NAME`, to select the actual surface material you want applied.
2. `Piece bodygroups and skin selection` is used when you want desired bodygroups
and/or skins on a piece. The textbox is a display showing the `bodygroup/skin`
selection code (ex. `1,2,3,4/5`) generated using the [context menu][ref-ctx-menu].
You cannot change the textbox value manually by tiping. Currently `Bodygroup/Skin`
(ex. [English](https://en.wikipedia.org/wiki/English_language)) option name will vary
based on the language used.
When you click it it will populate the text display in the tool menu.
and/or skins on a piece. The textbox is a display showing the `Bodygroup/Skin`
selection code (ex. `1,2,3,4/5`) generated using the [context menu][ref-ctx-menu].
You cannot change the textbox value manually by typing. Currently, `Bodygroup/Skin`
(ex. [English](https://en.wikipedia.org/wiki/English_language)) option name will vary
based on the language used.
When you click if it will populate the text display in the tool menu.
3. `Piece mass` setup control slider is used to set the mass of the next track piece to be
spawned. The larger the number the havier spawned track piece gets. Larger values are
recommended.
spawned. The larger the number the heavier spawned track piece gets. Larger values are
recommended.
4. `Active radius` control slider is used to set the minimum distance needed to select an
active point when
pointing at a piece. Keep this maxed out if you don't want to bother with track end selection.
5. `Stack count` control value shows the maximum number of pieces to be snapped in `stacking` mode.
Change this to something larger than one if you want to extend your track by stacking.
active point when
pointing at a piece. Keep this maxed out if you don't want to bother with track end selection.
5. `Stack count` control value shows the maximum number of pieces to be snapped in `Stacking` mode.
Change this to something larger than one if you want to extend your track by stacking.
6. `Angular alignment` control
The slider is used to snap the first piece ( Requested by [Magnum](http://steamcommunity.com/profiles/76561198004847743) )
to a user-defined angle ( Usually `45` ) so that the track building process becomes easier. The
whole track build will be snapped also because you are building it relative to the first piece.
The slider is used to snap the first piece ( Requested by [Magnum](http://steamcommunity.com/profiles/76561198004847743) )
to a user-defined angle ( Usually `45` ) so that the track building process becomes easier. The
whole track build will be snapped also because you are building it relative to the first piece.
7. `Force limit` control ( Requested by `The Arbitor 90` ) defines the maximum force to be applied
on the weld joint between two pieces connected before it breaks. You can use this to build collapsible
track bridges. Set the option to zero if you want it to be unbreakable ( by default ).
8. Options `weld`, `no-collide`, `no-collide world` ( Requested by Frosty ), `freeze`,
`phys-gun grab` and `gravity` are considered basic Gmod knowledge, because they are
defined by their own and not going to be explained further.
9. Option `Ignore track type` if checked, will enable snapping between pieces of a different
types.
on the weld joint between two pieces connected before it breaks. You can use this to build collapsible
track bridges. Set the option to zero if you want it to be unbreakable ( by default ).
8. Options `weld`, `no-collide`, `no-collide world` ( Requested by `Frosty` ), `freeze`,
`phys-gun grab` and `gravity` are considered basic Gmod knowledge, because they are
defined by their own and not going to be explained further.
9. Option `Ignore track type` if checked, will enable snapping between pieces of a different type.
10. Option `Spawn horizontally` ( as the name suggests ) if checked, will spawn the next
pieces horizontally relative to the map ground if the additional angle offsets are zeros.
If not they will be added to the resulting angle.
pieces horizontally relative to the map ground if the additional angle offsets are zeros,
if not, they will be added to the resulting angle.
11. Option `Origin from mass-center` if checked, will align the piece spawned to its
mass-center.
mass-center.
12. Option `Snap to trace surface` if checked, will snap the chosen track directly to the
trace surface.
trace surface.
![SurfSnap][ref-surf-snap]
13. Option `Draw adviser` if checked, will draw a composition of lines and circles to assist you with the building.
@ -264,12 +319,12 @@ Explanation of each control option is given in the summary below.
![PointAssist][ref-pnt-assist]
15. Option `Ghosts count` if greater than zero, will create a ghosts stack client-side to assist you with the track
building process. If you set this option to zero, ghosting will be disabled.
building process. If you set this option to zero, ghosting will be disabled.
16. When building a track using a different than the default way is needed you may use:
* `Origin <ang_comp>`, where `<ang_comp>` can be either `pitch`, `yaw` or `roll` are the angle
offsets used for orientating the base coordinate system in order to snap the piece as the user desires.
* `Offset <vec_comp>`, where `<vec_comp>` can be either `X`, `Y` or `Z` are linear offsets used for
additional user offset regarding the next track piece to be spawned.
* `Origin <ang_comp>`, where `<ang_comp>` can be either `pitch`, `yaw` or `roll` are the angle
offsets used for orientating the base coordinate system in order to snap the piece as the user desires.
* `Offset <vec_comp>`, where `<vec_comp>` can be either `X`, `Y` or `Z` are linear offsets used for
additional user offset regarding the next track piece to be spawned.
17. The button `V Reset variables V` as the name suggests clears the offsets mentioned in (16).
#### What will happen if something gets updated?
@ -309,10 +364,12 @@ The ones that are **included** in Garry's mod do not have links and are marked b
* [SligWolf's ModelPack](https://steamcommunity.com/sharedfiles/filedetails/?id=147812851) ( Mini hover tracks ) ( White rails )
* [Ron's Minitrain Props](https://steamcommunity.com/sharedfiles/filedetails/?id=728833183)
* [Battleship's abandoned rails](https://steamcommunity.com/sharedfiles/filedetails/?id=807162936)
* [Ron's G-Scale track pack](https://steamcommunity.com/sharedfiles/filedetails/?id=865735701) ( [Maintained by the owner][maintained] )
* [Ron's G-Scale track pack](https://steamcommunity.com/sharedfiles/filedetails/?id=865735701) ( [Maintained by the owner][ref-maintained] )
* [AlexCookie's 2ft track pack](https://steamcommunity.com/sharedfiles/filedetails/?id=740453553)
* [SligWolf's Tiny hover racer](https://steamcommunity.com/sharedfiles/filedetails/?id=1375275167)
* [Joe's track pack](https://steamcommunity.com/sharedfiles/filedetails/?id=1658816805)
* [StevenTechno's Buildings pack 2.0](https://steamcommunity.com/sharedfiles/filedetails/?id=1888013789)
* [Modular canal props](https://steamcommunity.com/sharedfiles/filedetails/?id=1336622735) ( Interior only )
#### Where are the trains/vehicles[,](ref-easter) are there any of these?
Dude seriously, make them yourself, what's the point of playing Gmod then ... xD
@ -374,11 +431,11 @@ Not to mention that the stunned people ***will NOT GET ANY updates*** !
The best you can do is just point to the [original GIT repository](https://github.com/dvdvideo1234/TrackAssemblyTool)
avoiding any version mismatches and confusions. So please don't upload the script to any other sites. ***[I mean it!](https://www.youtube.com/watch?v=b1Om3vX1GlA)***
[ref-entity]: http://wiki.garrysmod.com/page/Category:Entity
[ref-entity]: https://wiki.facepunch.com/gmod/Entity
[ref-dbext]: https://github.com/dvdvideo1234/TrackAssemblyTool/wiki/Database-extension
[ref-text-file]: https://www.youtube.com/watch?v=Pz0_RGwgfaY
[ref-value-exp]: https://www.youtube.com/watch?v=mEEpO3w8BLs
[ref-lua-script]: https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/autosave/z_autorun_add_pieces.lua
[ref-lua-script]: https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/autosave/z_autorun_%5Btrackassembly%5D.txt
[ref-load-list]: https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/trackassembly/trackasmlib_dsv.txt
[ref-list-pref]: https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/trackassembly/dsv/Test_s_track_packTRACKASSEMBLY_PIECES.txt
[ref-categ]: https://github.com/dvdvideo1234/TrackAssemblyTool/blob/master/data/trackassembly/dsv/Test_s_track_packTRACKASSEMBLY_CATEGORY.txt
@ -386,7 +443,7 @@ avoiding any version mismatches and confusions. So please don't upload the scrip
[ref-vid-physnap]: https://www.youtube.com/watch?v=BxMlZMMGHrs
[ref-usr-offs]: https://www.youtube.com/watch?v=e1IK2zJ_Djk
[ref-trans]: https://github.com/dvdvideo1234/TrackAssemblyTool/wiki/Translations
[ref-resz-api]: https://wiki.garrysmod.com/page/Entity/PhysicsInitConvex
[ref-resz-api]: https://wiki.facepunch.com/gmod/Entity:PhysicsInitConvex
[ref-fade-door]: https://steamcommunity.com/sharedfiles/filedetails/?id=115753588
[ref-search]: https://github.com/dvdvideo1234/TrackAssemblyTool#hey-there-is-a-text-box-and-a-drop-down-menu-next-to-the-exportdb-button-what-are-these-for-
[ref-rag-constr]: https://developer.valvesoftware.com/wiki/Phys_ragdollconstraint
@ -400,7 +457,7 @@ avoiding any version mismatches and confusions. So please don't upload the scrip
[ref-adviser]:https://raw.githubusercontent.com/dvdvideo1234/TrackAssemblyTool/master/data/pictures/snapadvaiser.jpg
[ref-screenshot]: https://raw.githubusercontent.com/dvdvideo1234/TrackAssemblyTool/master/data/pictures/screenshot.jpg
[ref-pnt-assist]: https://raw.githubusercontent.com/dvdvideo1234/TrackAssemblyTool/master/data/pictures/pointassist.jpg
[ref-ctx-menu]: https://wiki.garrysmod.com/page/The_Context_Menu
[ref-ctx-menu]: https://wiki.facepunch.com/gmod/The_Context_Menu
[ref-model]: https://developer.valvesoftware.com/wiki/Model
[ref-glua]: https://nodecraft.com/support/games/gmod/glua-101-an-introduction-to-garrys-mod-coding
[ref-exp2]: https://github.com/wiremod/wire/wiki/Expression-2

View File

@ -11,11 +11,11 @@ setlocal EnableDelayedExpansion
set gmadGitHEAD=
set gmadRevPath=%~dp0
set gmadNameLOG=gmad_log.txt
set gmadCommits=https://github.com/dvdvideo1234/TrackAssemblyTool/commit/
set gmadName=TrackAssemblyTool
set gmadCommits=https://github.com/dvdvideo1234/%gmadName%/commit/
set gmadPathGIT=D:\Git\bin
set gmadBinPath=F:\Games\Steam\steamapps\common\GarrysMod\bin
set "gmadTime=%date% %time%"
set gmadName=TrackAssembly
set gmadID=287012681
set gmadDirs=(lua)
set gmadLogs=
@ -35,9 +35,11 @@ echo.
:: Extract repository source contents
timeout 3
rd /S /Q !gmadRevPath!Workshop
del !gmadRevPath!!gmadNameLOG!
timeout 5
md %gmadRevPath%Workshop\!gmadName!
for %%i in %gmadDirs% do (
echo Extracting %%i
@ -94,3 +96,8 @@ rd /S /Q !gmadRevPath!Workshop
echo !gmadName! Published !
echo.
timeout 500
:: Give a chance to copy the logs
del !gmadRevPath!!gmadNameLOG!
exit 0