Updated library control statements (#59)

Fixed table definition runtime error for `ExportSyncDB`
Fixed: Actually use the super-elevation return value to notify the client
Fixed: Angle grid/snap triggering log messages
Fixed: Apply super-elevation when spawn flat is not checked
Fixed: Automatically populate POA row value on registration
Fixed: Categories not being exported due to one-liners
Fixed: Close generated files on sort fail
Fixed: Context menu `box` copy returning the incorrect row due to different cords
Fixed: Context menu icons not being displayed correctly
Fixed: Create table STMT building improper error logs
Fixed: Creating table index error report order
Fixed: Curve node remove on the client checks its status
Fixed: Curve node remove reverts the value of the last node
Fixed: DB export flag not being reset on menu error
Fixed: DSV auto-run loading due to `FORM_PREFIXDSV` being changed
Fixed: DSV manager buttons get squished when many DSV are present
Fixed: DSV manager properly showing generic database
Fixed: DSV registration existence check crash when source not provided
Fixed: Data selection sequential errors due to comparing different data type
Fixed: Direct value injection in `tA = {}`
Fixed: Equalize export column order for SQL/LUA mode
Fixed: Executing action OPEN_EXTERNDB status being unchecked
Fixed: Exit properly on SQL build deny
Fixed: Export BD convar is not reset when exporting inventory
Fixed: Export auto-run failing due to the new control statement
Fixed: Export track type as DSV in SQL mode
Fixed: Export type auto-run not finding a data checks
Fixed: Exporting DSV in Lua mode create unnecessary table
Fixed: Exporting DSV in SQL mode triggers data matching error
Fixed: Exporting DSV process triggering error due to query store missing
Fixed: Exporting content for sync inventory missing new added models due to the store cache
Fixed: Exporting content to autorun file trigger order error in SQL mode
Fixed: External DB manager closing its panel when no line is selected on entry
Fixed: External DB manager creating new DSV when edit is triggered
Fixed: Failed routine `ExportTypeDSV` cannot index files P/A
Fixed: File fore-close for `ExportDSV` on some fail cases
Fixed: Frequent pices panel sorting crashing in LUA mode
Fixed: Frequent pieces panel not working
Fixed: Frequent pieces retiring more that N when more than N are valid
Fixed: Frequent pieces return the table when at least one is present
Fixed: Frequent pieces updated with records without post-work
Fixed: General sorting when values are missing. Nil is less than everything
Fixed: Incorrect indexing for DSV synchronization raises errors in track pack scripts
Fixed: Inventory export runtime errors with library self-reference
Fixed: Log settings return proper value
Fixed: Logic and runtime errors of `ExportTypeDSV`
Fixed: Lower the network latency when sending normal vectors
Fixed: Lua mode exports being more accurate
Fixed: Luapad call crashing when editing DSV contents
Fixed: Luapad prefix is not displayed on the opened tab
Fixed: Matching forcing errors in  LUA mode
Fixed: Node name is always overridden by category
Fixed: Node settings not being copied in some cases
Fixed: Panel content not sorted correctly due to missing local reference
Fixed: Panel runtime errors
Fixed: Phys properties generating sequential errors
Fixed: Phys property size being bound to sequential records
Fixed: Physical properties exported as DSV PKs are not ordered
Fixed: Physical properties table exports PK without quotes
Fixed: Population additions on autorun checking for no data found
Fixed: Prefix/parameters being consistent across all APIs
Fixed: Primary table validation proper build error report
Fixed: Provide the context menu tables option if such are available at all
Fixed: Reduce the network overhead for `CREATE_CURVE_NODE`
Fixed: Reduce the select columns count for additions
Fixed: Registering a DSV does not show source script in the logs
Fixed: Routine `ExportTypeRun` failed to export contents in lua mode
Fixed: Routine pieces search by type icon missing
Fixed: Runtime error due to missed bracket in `CacheQueryAdditions`
Fixed: Runtime error file exists missing the second argument
Fixed: Runtime error in `ImportDSV` relative to `DATA`
Fixed: Runtime errors in `ExportSyncDB` and `ExportTypeDSV` for SQL mode
Fixed: Runtime errors in `ExportTypeDSV` for DB mode
Fixed: Runtime errors in `ProcessDSV` using old folder path
Fixed: Runtime missing bracket in `ApplySuperElevation`
Fixed: Some runtime errors
Fixed: Some runtime errors
Fixed: Some runtime errors
Fixed: Some spaced in the header logs
Fixed: Some table routines runtime errors `ExportContentsRun`
Fixed: Some typos reading auto-run export comments
Fixed: Super-elevation auto update not working on node update
Fixed: Tool panel runtime errors `asmlib.*`
Fixed: Tool tree panel sorts non-categorized items with priority
Fixed: Translation not showing database mode
Fixed: Tree export context menu calling wrong routine
Fixed: Unneeded square root calculation in `GetNearest`
Fixed: Use different placeholders for tool panel item rooting. Utilize `pNode`
Fixed: Utilizing `tpText:Scan` using wrong field
Fixed: When less values are provided in the DSV do not trigger length error on import
Fixed: Where clause failing with parameter missing
Fixed: Wire-mod extension tester
Fixed: Wrong storage of grater-equals
Fixed: `ExportSyncDB` accessing global `WorkshopID`
Fixed: `ExportSyncDB` addressing the wrong log pattern
Fixed: `XQM Ball Rails` category triggering a silent error due to mismatch
Fixed: `isstring` global being defined two times
Added: 100% grade as OP variable `FULL_SLOPEDG` tan(45)
Added: All tree panels now open the context tree menu when eligible to do so
Added: Attachment extraction via unique entity index and log per type
Added: Automatic Z offset update when selecting curve node via active point
Added: Automatic folder creation when requesting a path
Added: Automatic generator for misaligned pipes new E2 style
Added: Automatic super-elevation for curved tracks
Added: Better logic control flow for `Categorize`
Added: Cache PIECES method `ExportTypeDSV` for LUA mode
Added: Category for `Scene Builder`
Added: Category sort/export into separate functions
Added: Centralized function to copy from list view
Added: Check of the modified normal exists
Added: Context menu with selection options for the track selection tree
Added: Custom columns ID option to `GetColumnList`
Added: Custom columns ID option to `GetConcat`
Added: Customizable table row concatenation
Added: DSV manger list view content move option and translations
Added: DSV synchronizer not handling existent open fail
Added: Dedicated prefix for generic ( whole DB containers )
Added: Description for `GetCurveTransform`
Added: Description for super-elevation
Added: Export DSV header configurations
Added: Export tracks inventory on shift + click
Added: Force EXP destination for Export/Import DSV
Added: Freshly exported content database from the gmod client
Added: Function to export list-view rows
Added: General structure for tool panel with category
Added: Generic DB file existence checker for the exports
Added: Handle actions status properly for `pcall`
Added: Import DSV utilizes file header
Added: Import/Export category being forced from/to the EXP folder
Added: Internal queries are defined in the table definition
Added: LUA mode routine for `ExportTypeRun` populating pieces table
Added: Load the node into tool offsets
Added: Menu options size instead of a while + increment
Added: Mode tree context menu translation and icons
Added: More checks when importing a DSV file
Added: More export options for DSV format and script format
Added: More fail-safe handling for size/used cache parameter
Added: More items in scene builder
Added: More logging skip triggers
Added: Move validation to the hook info tracker
Added: Pieces record trigger to default POA values to NULL
Added: Query store and format as table method
Added: Return empty sort set when providing empty table. Skip processing
Added: Routine pieces can also export content
Added: Routine pieces context menu
Added: Scene builder addon content
Added: Sequential checks for all tables in SQL/LUA mode
Added: Some `Scene builder` but not being validated yet
Added: Some micro-optimizations
Added: Some missing translations
Added: Sorting when exporting data in Lua mode
Added: Store index count in the SQL command table
Added: Synchronization commit from the master branch
Added: TODO list for `CurveUpdate`
Added: Test if the file is present before opening
Added: The rest of the items for `Scene Builder`
Added: Timer definition as table support
Added: Timer setup support for multiple types
Added: Tooltips for category/model nodes label/icon/expander/validation
Added: Translation for the routine pieces context menu
Added: Translations for Bulgarian and Russian
Added: UTF-8 BOM to the Chinese translations
Added: Upload/Download node offsets and marker in `DrawHUD`
Added: Upload/Download node offsets in `CurveUpdate`
Added: Usage of `PATTEM_EXDSVHED` in the rest of the places
Added: User preferences for amount of super-elevation
Added: Varargs to custom sorting
Added: `Export type` option when right-click on a tree type
Changed: Export tree context menu icon
Changed: Only one database per table to trigger generic population
Changed: Open DSV manager will be triggered by export DB button
Changed: Panels context menu localization and icon hashes
Changed: Reduce wrap arguments count
Changed: Some logs when Lua table routine handler fails
Changed: Utilize global file value
Improved: Log formatting for less concatenations (PATTEM_EXDSVHED)
Improved: Make sure to catch bad table column configuration on create
Improved: Reduce memory for indices (1) is the same as (1,2) unique
Improved: Store only query panel row index instead of duplicating model/name
Moved: Tree dedicated context menu to its function
Optimized: Category sorting for nil/string
Optimized: Frequent pieces. Do not loop if no need to
Optimized: Read phys-properties column name in a local variable
Optimized: `ChecheQueryPanel` and its data structure
Optimized: `SettingsLog` bail early when conditions are not met
Optimized: `asmlib.GetWrap` being 50% faster. Removed loop
Remove: table definition local variable `PHYSPROPERTIES` not used
Removed: Category hash table and current category reference
Removed: Export database as a file will not be present on the server
Removed: Export inventory form panel tree buildup
Removed: Frequent pieces count parameter is not needed anymore
Removed: Function `GetWrap` not needed anymore
Removed: Library pointer usage inside itself
Removed: Localized reference for root pointer. Use hash instead
Removed: Nasty button FS handler from DSV configuration
Removed: Needless table/columns indexing in `AddLineListView`
Removed: Numbers from comments
Removed: One-liner export error trigger in `ExportCategory`
Removed: Reading default class and creating POA for every addition
Removed: Reverse-hash indexing for tree nodes
Removed: Some data exports that are old and nor relevant anymore
Removed: Some unused variables from `AttachAdditions`
Removed: Translation `pn_externdb_lb` not needed anymore
Removed: Usage of `OPSYM_ENTPOSANG` register/locate is unneeded
Removed: Use the text fields metadata instead of `excgRow`
Removed: `GetDirectory` using revers indexing. Utilize reference hash-jumps instead
Removed: `MISS_NOTR` as translations work differently now
Removed: `PushSortValues` integrated in `GetFrequentModels`
Removed: `TYPEMT_VECTOR` and `TYPEMT_ANGLE` that are not used
Removed: `iInd` from `GetFrequentPieces` as it is not used
Rename: FORM_PREFIXDSV > FORM_PREFIXFDB
Rename: `ExportAR` to `ExportContentsRun`
Rename: `ext_dsv` localization to `extdsv`
Renamed the auto-run related functions to the new convention
Renamed: Bodygroup apply to actual apply
Renamed: Generic prefix local variable
Renamed: PrioritySort > Arrange
Renamed: Some local variables
Renamed: `CacheQueryInventory` to `CacheQueryTree` using inventory cached version
Renamed: `CacheQueryPanel` to `CacheQueryInventory`
Renamed: `Element` to `Content`
Renamed: `SetSomethingNode` to `SetNodeSomething`
Reverted: Expand panel location
Updated: Russian translation by phrase hash
Updated: DSV button mangers to prefix context menu
Updated: Import/Export category
Updated: Add translation to be removed after a sync
Updated: Additions data insertion trigger in LUA mode
Updated: Auto-run export function headers
Updated: Better sorting algorithm
Updated: Category export header general format
Updated: Category header internal pattern
Updated: Category sorting and population
Updated: Chose the unique index for all tables
Updated: Code rearrangement and var localization
Updated: DSV databases can show the internal error when present ( coding style )
Updated: DSV manager now uses hash notation as well
Updated: Database synchronization script
Updated: English translations for the prefix context menu
Updated: Export auto-run configuration
Updated: Export synchronization file independent from DEV mode
Updated: Export type to DSV format in LUA mode
Updated: Exported content include purpose in the file name
Updated: French translations
Updated: Frequent pieces is searched by internal column ID (1,2,3,4)
Updated: Frequent pieces now use indices for (model,type,name,act)
Updated: Frequently used data contains also request count
Updated: General path format during export only used in `GetLibraryPath`
Updated: General usage of one error function preserving the stack
Updated: Generic database prefix from library name
Updated: Import category clamps the marker. Zero is invalid
Updated: Library control statements
Updated: Link to the silk icons to the proper Gmod link page
Updated: Log proper data when navigation is missing
Updated: Matching database mode check move up
Updated: Matching exit early when number is invalid
Updated: Micro-optimization when calling `GetColumnName`
Updated: Not exists in some cases by default
Updated: Pieces DSV export multi-liner
Updated: Pipe E2 Export generator
Updated: Query parameters at the top
Updated: Query store selection operator
Updated: Quit executing the script if module load fails
Updated: Rearrange auto-run export file
Updated: Routine pieces search and list vie use the same column names
Updated: Routine pieces translation in one place
Updated: SQL build statement library
Updated: Some typos and grammar updates for Shinji and autorun
Updated: Sorting function `VCOMPARE_SDAT`
Updated: Statement key `CacheQueryPiece` used only in SQL mode
Updated: Switched to number to hash notation in the frequent pieces panel
Updated: Trace root information being handled better
Updated: Type as DSV table cloture concatenation in SQL mode
Updated: Use library path instead of `FORM_PREFIXDSV`
Updated: Use trace fraction when calling `GetCurveTransform`
Updated: Utilize `debugGetinfo(1).name` instead of function name hard coding
Updated: `ExportContentsRun` routine request being run trough protected call
Updated: `ExportSyncDB` with better handling
Updated: `ExportTypeRun` now uses proper indexed ordering
Updated: `RegisterPOA` storing the input data in row mode. Decoded when locating
Updated: `SetDirectory` to match the new tree creation routine
Updated: convert log formatting to local for `ExportTypeDSV`
Utilize: for-integer loop with Table.Size in some places
Utilize: integer-for loop
Utilize: Addition.Size
Utilize: `tableInsert` in `ProcessDSV`
This commit is contained in:
Deyan Dobromirov 2024-12-27 17:15:08 +02:00 committed by GitHub
parent ac751fcc43
commit 9360519b24
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 8697 additions and 8282 deletions

View File

@ -0,0 +1,136 @@
@name TA Pipe Generator
@model models/props_lab/huladoll.mdl
@persist [Scanner Pipe]:entity [F U R,C MP]:vector [TU TD TL TR]:ftrace
@persist [Delta Iter Raun]:number [ScanCenter SizeCenter]:vector2 MA:angle
@outputs
if(first() || dupefinished())
{
# Scan size. Most rails are more wider than higher
# For PHX two bean rails W > H
ScanR = 500 # Scan radius must be bigger then pipe radius
# Amount of iterations to lower delta
Iter = 10
# Rouding
Raun = 4
# Align center to prop center
ScanCenter = vec2(0, 3)
SizeCenter = vec2(3, 3)
# How fast it will scan the piece edge
Delta = 1
# Local oriantation vectors
F = vec(1,0,0)
U = vec(0,0,1)
# Automatic stuff
Scanner = entity()
Pipe = noentity()
U = U:normalized()
R = F:cross(U)
MP = Scanner:pos()
MA = Scanner:angles()
C = U * ScanCenter:y() + R * ScanCenter:x()
holoCreate(1), holoColor(1,vec(255,0,0)), holoScale(1,0.1*vec(1,1,1)) holoModel(1,"cone")
holoCreate(2), holoColor(2,vec(0,0,255)), holoScale(2,0.1*vec(1,1,1)) holoModel(2,"cone")
holoCreate(3), holoColor(3,vec(255,255,0)), holoScale(3,0.1*vec(1,1,1)) holoModel(3,"cone")
holoCreate(4), holoColor(4,vec(0,255,255)), holoScale(4,0.1*vec(1,1,1)) holoModel(4,"cone")
holoCreate(5), holoColor(5,vec(0,255,0)), holoScale(5,0.1*vec(1,1,1)) holoModel(5,"cube")
holoCreate(6), holoColor(6,vec(255,0,255)), holoScale(6,0.1*vec(1,1,1)) holoModel(6,"cube")
TU = Scanner:setFTrace(C + SizeCenter:x() * U, U, ScanR):useArray():putArray(Scanner)
TD = Scanner:setFTrace(C - SizeCenter:x() * U, U, -ScanR):useArray():putArray(Scanner)
TR = Scanner:setFTrace(C + SizeCenter:y() * R, R, ScanR):useArray():putArray(Scanner)
TL = Scanner:setFTrace(C - SizeCenter:y() * R, R, -ScanR):useArray():putArray(Scanner)
}
function drawFTrace(T:ftrace, N:number)
{
P = T:getPosWorld()
D = T:getDirWorld()
A = D:toAngle()
A = A:rotateAroundAxis(A:right(), -90)
holoPos(N, P)
holoAng(N, A)
}
event tick()
{
holoPos(5, Scanner:toWorld(C))
drawFTrace(TU:smpLocal(), 1)
drawFTrace(TD:smpLocal(), 2)
drawFTrace(TR:smpLocal(), 3)
drawFTrace(TL:smpLocal(), 4)
if(Scanner != noentity())
{
if(TU:isHit() && TD:isHit() && TR:isHit() && TL:isHit())
{
VU = (TU:getFractionLen() - TD:getFractionLen())
VR = (TR:getFractionLen() - TL:getFractionLen())
DL = U * VU + R * VR
MP = (TU:getPosWorld() + TD:getPosWorld() +
TR:getPosWorld() + TL:getPosWorld()) / 4
#print("Move:", DL)
holoPos(6, MP)
if(Pipe == noentity())
{
Pipe = TU:getEntity()
print("Pipe:", Pipe)
}
C = C + F * Delta
TU:rayMove(F + DL, Delta)
TD:rayMove(F + DL, Delta)
TR:rayMove(F + DL, Delta)
TL:rayMove(F + DL, Delta)
}
else
{
# print("Iteration:", Iter)
if(Iter <= 0)
{
Scanner = noentity()
}
C = C - F * Delta
TU:rayMove(F, -Delta)
TD:rayMove(F, -Delta)
TR:rayMove(F, -Delta)
TL:rayMove(F, -Delta)
Delta = Delta / 2
Iter = Iter - 1
}
}
else
{
if(Pipe != noentity())
{
Mo = Pipe:model()
Or = Pipe:toLocal(MP)
OrX = toString(round(Or:x(), Raun))
OrY = toString(round(Or:y(), Raun))
OrZ = toString(round(Or:z(), Raun))
OrS = OrX+","+OrY+","+OrZ
An = Pipe:toLocal(MA)
AnP = toString(round(An:pitch(), Raun))
AnY = toString(round(An:yaw(), Raun))
AnR = toString(round(An:roll(), Raun))
AnS = AnP+","+AnY+","+AnR
if(OrS == "0,0,0") { OrS = "" }
if(AnS == "0,0,0") { AnS = "" } else { AnS = ", \""+AnS+"\"" }
print("PIECES:Record({\""+Mo+"\", \"#\", \"#\", 0, \"\", \""+OrS+"\""+AnS+"})")
Pipe = noentity()
}
}
}

View File

@ -57,10 +57,10 @@ if(first() || dupefinished())
}else{ error("Additions line fail "+M) }
P1 = trackasmlibGetProperty()
if(P1[3,string] == "Metal")
if(P1[3,string] == "Liquid")
{
P2 = trackasmlibGetProperty(P1[3,string])
if(P2[5, string] == "crowbar")
if(P2[1, string] == "slime")
{
print("Property type OK <"+P2[5, string]+">")
}else{ error("Property type fail <"+P2[5, string]+">")}

View File

@ -1,8 +0,0 @@
# StoreExternalDatabase( INS ): 01/22/17 17:15:05 [ LUA ]
# Data settings: MODELBASE,MODELADD,ENTCLASS,LINEID,POSOFF,ANGOFF,MOVETYPE,PHYSINIT,DRSHADOW,PHMOTION,PHYSLEEP,SETSOLID
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/sw_lever.mdl","buttonswitch",1,"-100,125,0","NULL",-1,-1,-1,0,-1,-1})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_r_switcher1.mdl","prop_dynamic",2,"NULL","NULL",6,6,-1,-1,1,6})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_r_switcher2.mdl","prop_dynamic",3,"NULL","NULL",6,6,-1,0,-1,0})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/sw_lever.mdl","buttonswitch",1,"-100,-125,0","0,180,0",-1,-1,-1,0,-1,-1})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_l_switcher1.mdl","prop_dynamic",2,"NULL","NULL",6,6,-1,-1,1,6})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_l_switcher2.mdl","prop_dynamic",3,"NULL","NULL",6,6,-1,0,-1,0})

View File

@ -1,91 +0,0 @@
# StoreExternalDatabase( INS ): 01/22/17 17:15:05 [ LUA ]
# Data settings: TYPE,LINEID,NAME
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",1,"default"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",2,"default_silent"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",3,"floatingstandable"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",4,"item"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",5,"ladder"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",6,"no_decal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",7,"player"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",8,"player_control_clip"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",1,"brick"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",2,"concrete"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",3,"concrete_block"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",4,"gravel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",5,"rock"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",1,"canister"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",2,"chain"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",3,"chainlink"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",4,"combine_metal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",5,"crowbar"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",6,"floating_metal_barrel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",7,"grenade"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",8,"gunship"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",9,"metal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",10,"metal_barrel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",11,"metal_bouncy"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",12,"Metal_Box"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",13,"metal_seafloorcar"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",14,"metalgrate"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",15,"metalpanel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",16,"metalvent"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",17,"metalvehicle"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",18,"paintcan"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",19,"popcan"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",20,"roller"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",21,"slipperymetal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",22,"solidmetal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",23,"strider"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",24,"weapon"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",1,"wood"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",2,"Wood_Box"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",3,"Wood_Furniture"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",4,"Wood_Plank"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",5,"Wood_Panel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",6,"Wood_Solid"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",1,"dirt"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",2,"grass"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",3,"gravel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",4,"mud"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",5,"quicksand"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",6,"sand"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",7,"slipperyslime"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",8,"antlionsand"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Liquid",1,"slime"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Liquid",2,"water"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Liquid",3,"wade"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Frozen",1,"snow"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Frozen",2,"ice"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Frozen",3,"gmod_ice"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",1,"carpet"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",2,"ceiling_tile"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",3,"computer"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",4,"pottery"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",1,"alienflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",2,"antlion"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",3,"armorflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",4,"bloodyflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",5,"flesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",6,"foliage"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",7,"watermelon"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",8,"zombieflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",1,"jeeptire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",2,"jalopytire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",3,"rubber"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",4,"rubbertire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",5,"slidingrubbertire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",6,"slidingrubbertire_front"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",7,"slidingrubbertire_rear"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",8,"brakingrubbertire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",9,"tile"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",10,"paper"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",11,"papercup"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",12,"cardboard"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",13,"plaster"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",14,"plastic_barrel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",15,"plastic_barrel_buoyant"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",16,"Plastic_Box"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",17,"plastic"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",18,"glass"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",19,"glassbottle"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",20,"combine_glass"})

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
#1 ExportDSV:(cl_@ADDITIONS) 24-10-30 22:25:29 [ LUA ]
#2 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,203 @@
# ExportCategory:(3@cl_) 24-10-30 22:25:29 [ LUA ]
[===[SligWolf's Modelpack===function(m) local s, c; s = _G.SligWolf_Addons; c = s and s.CallFunctionOnAddon("modelpack", "TrackAssamblerCategory", m); return c; end]===]
[===[Portal 2 Walkway UG===function(m)
local g = m:gsub("models/props_underground/", "") return g:match("%w+") end]===]
[===[Battleship's abandoned rails===function(m)
local g = m:gsub("models/craptrax/","")
local r = g:match(".+/"):sub(1, -2)
local n = g:match("[\\/]([^\\/]+)$"):gsub("%.mdl","")
if(r:find("straight")) then r = "straight"
elseif(r:find("curve")) then r = "curve"
elseif(r:find("switch")) then r = "switch" end
local t = n:match(r.."_")
if(t) then n = n:gsub(t,"") end; return r, n; end]===]
[===[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("/")
local g = s and r:sub(1,s-1) or "other"
if(g == "luajunctions") then
o = {g}; local e
n = m:gsub("models/ron/2ft/luajunctions/","")
n = n:gsub("/junction.mdl",""):gsub("junctions/","junction_")
e = n:find("/"); n = e and n:sub(1,e-1) or n
elseif(g == "straight") then
n, o = r:sub(s+1,-1):gsub("straight_",""):gsub("%.mdl",""), {g}
elseif(g == "embankment") then
local e = r:sub(s+1,-1):gsub("embankment_","")
local s = e:find("%A")
n, o = e:gsub("%.mdl",""), {g,((s > 1) and (e:sub(1,s-1)) or nil)}
elseif(g == "ramps") then
n, o = r:sub(s+1,-1):gsub("ramp_",""):gsub("%.mdl",""), {g}
elseif(g == "tram") then
n, o = r:sub(s+1,-1):gsub("tram_",""):gsub("%.mdl",""), {g}
elseif(g == "turntable") then
n, o = r:sub(s+1,-1):gsub("turntable_",""):gsub("%.mdl",""), {g}
elseif(g == "viaduct") then
n, o = r:sub(s+1,-1):gsub("viaduct_",""):gsub("%.mdl",""), {g}
elseif(g == "road_crossings") then
n, o = r:sub(s+1,-1):gsub("road_",""):gsub("%.mdl",""), {g}
elseif(g == "curves") then
n, o = r:sub(s+1,-1):gsub("curve_",""):gsub("%.mdl",""), {g}
else o = {g} end; n = n and ("_"..n):gsub("_%w",conv):sub(2,-1)
for i = 1, #o do o[i] = ("_"..o[i]):gsub("_%w", conv):sub(2,-1) end; return o, n end]===]
[===[SligWolf's Mini Trains===function(m) local s, c; s = _G.SligWolf_Addons; c = s and s.CallFunctionOnAddon("minitrains", "TrackAssamblerCategory", m); return c; end]===]
[===[Magnum's Rails===function(m)
local g = m:gsub("models/magtrains1ga/",""):gsub("/","_")
local r = g:match(".-_"):sub(1, -2); g = g:gsub(r.."_", "")
local t, n = g:match(".-_"), g:gsub("%.mdl","")
if(t) then t = t:sub(1, -2); g = g:gsub(r.."_", "")
if(r:find(t)) then n = n:gsub(t.."_", "") end
end; if(r:find("switchbase")) then r = "switch" end; return r, n end]===]
[===[Ron's G Scale Track pack===function(m)
local function conv(x) return " "..x:sub(2,2):upper() end
local r = m:gsub("models/ron/gscale/",""):gsub("_","/")
local s = r:find("/"); r = (s and r:sub(1,s-1):gsub("^%l", string.upper) or nil);
return r and {r} or nil end]===]
[===[AlexCookie's 2ft track pack===function(m)
local g = m:gsub("models/alexcookie/2ft/","")
local r = g:match(".+/"):sub(1, -2)
local n = g:match("[\\/]([^\\/]+)$"):gsub("%.mdl","")
local t = n:match(r.."_"); if(t) then n = n:gsub(t,"") end; return r, n; end]===]
[===[Ron's Minitrain Props===function(m)
local g = m:gsub("models/ron/minitrains/","")
local r = g:match(".-/"):sub(1, -2)
if(r == "elevations") then
local s = g:gsub(r.."/", ""):gsub("/.+$", "")
local n = g:match("[\\/]([^/\\]+)$"):gsub("%.mdl","")
local p = n:match(".-_")
if(p) then p = p:sub(1, -2)
if(r:find(p)) then n = n:gsub(p, ""):sub(2,-1) end
end; return {r, s}, n; end; return r; end]===]
[===[SligWolf's Suspension Train===function(m) local s, c; s = _G.SligWolf_Addons; c = s and s.CallFunctionOnAddon("wpsuspensiontrain", "TrackAssamblerCategory", m); return c; end]===]
[===[StevenTechno's Buildings 2.0===function(m)
local g = m:gsub("models/","")
local r = g:match(".+/"):sub(1, -2)
local n = g:match("[\\/]([^\\/]+)$"):gsub("%.mdl","")
local t = r:find("/")
if(t) then r, g = r:sub(1, t-1), r:sub(t+1, -1)
if(r:find("road")) then r = "roads"
elseif(r:find("building")) then r = "buildings" end
return {r, g}, n end; return r, n; end]===]
[===[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; return c end]===]
[===[StevenTechno's Buildings 1.0===function(m)
local r = m:gsub("models/buildingspack/",""):gsub("%W.+$","")
if (r:find("emptylots")) then r = "empty_lots"
elseif(r:find("roadsdw")) then r = r:gsub("roadsdw","double_")
elseif(r:find("roadsw" )) then r = r:gsub("roadsw" ,"single_") end; return r; end]===]
[===[PHX Tubes Miscellaneous===function(m)
local g = m:gsub("models/props_phx/construct/",""):gsub("/","_")
local r = g:match(".-_"):sub(1, -2); g = g:gsub(r.."_", "")
local t, n = g:match(".-_"), g:gsub("%.mdl","")
if(t) then t = t:sub(1, -2); g = g:gsub(r.."_", "")
if(r:find(t)) then n = n:gsub(t.."_", "") end
end; return r, n; end]===]
[===[XQM Ball Rails===function(m)
local g = m:gsub("models/xqm/rails/",""):gsub("/","_")
local r = g:match(".-_"):sub(1, -2); g = g:gsub(r.."_", "")
local t, n = g:match(".-_"), g:gsub("%.mdl","")
if(t) then t = t:sub(1, -2); g = g:gsub(r.."_", "")
if(r:find(t)) then n = n:gsub(t.."_", "")
end; end; return r, n; end]===]
[===[PHX Tubes Plastic===function(m)
local g = m:gsub("models/hunter/",""):gsub("/","_")
local r = g:match(".-_"):sub(1, -2); return r end]===]
[===[SProps===function(m)
local r = m:gsub("models/sprops/trans/train/",""):gsub("track_",""):sub(1,1)
if(r == "s") then return "straight" elseif(r == "t") then return "turn"
elseif(r == "h") then return "ramp" else return nil end end]===]
[===[Modular City Street===function(m)
local o = {}
function setBranch(v, p, b, q)
if(v:find(p)) then
local e = v:gsub("%W*"..p.."%W*", "_")
if(b and o.M) then return e end
if(b and not o.M) then o.M = true end
table.insert(o, (q or p)); return e
end; return v
end
local r = m:gsub("models/propper/dingles_modular_streets/",""):gsub("%.mdl$","");
r = setBranch(r, "highway", true, nil)
r = setBranch(r, "street", true, nil)
r = setBranch(r, "endcap", false, nil)
r = setBranch(r, "turn", false, nil)
r = setBranch(r, "ramp", false, nil)
r = setBranch(r, "connector", false, nil)
r = setBranch(r, "tjunction", false, nil)
r = setBranch(r, "intersection", false, nil)
r = setBranch(r, "elevated", false, nil)
o.M = nil; return o, r:gsub("^_+", ""):gsub("_+$", ""):gsub("_+", "_") end]===]
[===[Anyone's Horrible Trackpack===function(m) local c
local r = m:gsub("anytracks/", "")
if(r:find("straight")) then c = "straight"
elseif(r:find("curve")) then c = "curve"
elseif(r:find("%dx")) then c = "straight"
end; c = (c and c:gsub("^%l", string.upper) or nil) return c end]===]
[===[RockMan's Fortification===function(m)
local r = m:gsub(".+/", ""):gsub("_.*",""); return r end]===]
[===[XQM Coaster===function(m)
local g = m:gsub("models/xqm/coastertrack/",""):gsub("%.mdl","")
local r = g:match(".-_"):sub(1,-2)
local n = g:gsub(r.."_", ""); return r, n; end]===]
[===[Portal 2 High Walkway===function(m)
local g = m:gsub("^.*walkway",""):gsub("%.mdl$", "")
if(g:find("%d")) then return "straight"
elseif(g:find("%a+_*")) then local s = g:match("%a+_*")
if(s:len() <= 2) then return "turns" else return "special" end
else return nil end end]===]
[===[Transrapid===function(m)
local g = m:gsub("models/ron/maglev/",""):gsub("/","_")
g = g:gsub("[\\/]([^\\/]+)$",""):gsub("%.mdl","")
local r = g:match(".-_"):sub(1, -2)
if(r == "track") then g = g:gsub(r.."_", "")
r = g:match(".-_"):sub(1, -2) else return nil end
local t, n = g:match(".-_"), g:gsub(r.."_", "")
if(t) then t = t:sub(1, -2); g = g:gsub(t.."_", "")
if(r:find(t)) then n = n:gsub(t.."_", "") end
end; return r, n; end]===]
[===[Joe's track pack===function(m)
local g = m:gsub("models/joe/jtp/","")
local r = g:match(".+/"):sub(1, -2)
local n = g:match("[\\/]([^\\/]+)$"):gsub("%.mdl","")
local t = r:find("/")
if(t) then return {r:sub(1, t-1), r:sub(t+1, -1)}, n end; return r, n; end]===]
[===[Mr.Train's G-Gauge===function(m)
local r = m:gsub("models/props/g_gauge/track/g_gauge_track_","")
local n = r:gsub("%.mdl",""); r = r:gsub("%W.+$","")
n = n:gsub(r.."_", ""); if(r == "s") then r = "curves" end; return r, n end]===]
[===[Modular Canals===function(m)
local n = m:gsub("models/props_d47_canals/interior_","")
local r = n:match("%a+"); n = n:gsub("%.mdl",""); return r, n; end]===]
[===[SligWolf's Tiny Hover Racer===function(m) local s, c; s = _G.SligWolf_Addons; c = s and s.CallFunctionOnAddon("tinyhoverracer", "TrackAssamblerCategory", m); return c; end]===]
[===[Trackmania United Props===function(m)
local g = m:gsub("models/nokillnando/trackmania/ground/", "")
local r = g:match(".+/"):sub(1,-2); return r; end]===]
[===[Bobster's two feet rails===function(m) local o = {}
local n = m:gsub("models/bobsters_trains/rails/2ft/","")
local r = n:match("^%a+"); n = n:gsub("%.mdl","")
for w in n:gmatch("%a+") do
if(r:find(w)) then n = n:gsub(w.."%W+", "") end
end table.insert(o, r); local f = n:match("^%a+")
if(f) then table.insert(o, f); n = n:gsub(f.."%W+", "") end; return o, n; end]===]
[===[Mr.Train's M-Gauge===function(m)
local r = m:gsub("models/props/m_gauge/track/m_gauge_","")
local n = r:gsub("%.mdl", ""); r = r:gsub("%W.+$","")
if(tonumber(r:sub(1,1))) then r = "straight" else n = n:gsub(r.."_", "") end; return r, n; end]===]
[===[G Scale Track Pack===function(m)
local g = m:gsub("models/gscale/","")
local r = g:match(".-/"):sub(1, -2)
if (r == "j") then r = "j switcher"
elseif(r == "s") then r = "s switcher"
elseif(r == "c0512") then r = "curve 512"
elseif(r == "ibeam") then r = "iron beam"
elseif(r == "ramp313") then r = "ramp 313" end; return r; end]===]
[===[CAP Walkway===function(m)
local g = m:gsub("models/boba_fett/catwalk_build/", "")
local p = g:match("%w+_"); return (p and p:sub(1,-2) or "other") end]===]

View File

@ -0,0 +1,91 @@
#1 ExportDSV:(cl_@PHYSPROPERTIES) 24-10-30 22:25:29 [ LUA ]
#2 PHYSPROPERTIES:( TYPE LINEID NAME)
TRACKASSEMBLY_PHYSPROPERTIES "Special" 1 "default"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 2 "default_silent"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 3 "floatingstandable"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 4 "item"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 5 "ladder"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 6 "no_decal"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 7 "player"
TRACKASSEMBLY_PHYSPROPERTIES "Special" 8 "player_control_clip"
TRACKASSEMBLY_PHYSPROPERTIES "Concrete" 1 "brick"
TRACKASSEMBLY_PHYSPROPERTIES "Concrete" 2 "concrete"
TRACKASSEMBLY_PHYSPROPERTIES "Concrete" 3 "concrete_block"
TRACKASSEMBLY_PHYSPROPERTIES "Concrete" 4 "gravel"
TRACKASSEMBLY_PHYSPROPERTIES "Concrete" 5 "rock"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 1 "canister"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 2 "chain"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 3 "chainlink"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 4 "combine_metal"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 5 "crowbar"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 6 "floating_metal_barrel"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 7 "grenade"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 8 "gunship"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 9 "metal"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 10 "metal_barrel"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 11 "metal_bouncy"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 12 "Metal_Box"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 13 "metal_seafloorcar"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 14 "metalgrate"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 15 "metalpanel"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 16 "metalvent"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 17 "metalvehicle"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 18 "paintcan"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 19 "popcan"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 20 "roller"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 21 "slipperymetal"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 22 "solidmetal"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 23 "strider"
TRACKASSEMBLY_PHYSPROPERTIES "Metal" 24 "weapon"
TRACKASSEMBLY_PHYSPROPERTIES "Wood" 1 "wood"
TRACKASSEMBLY_PHYSPROPERTIES "Wood" 2 "Wood_Box"
TRACKASSEMBLY_PHYSPROPERTIES "Wood" 3 "Wood_Furniture"
TRACKASSEMBLY_PHYSPROPERTIES "Wood" 4 "Wood_Plank"
TRACKASSEMBLY_PHYSPROPERTIES "Wood" 5 "Wood_Panel"
TRACKASSEMBLY_PHYSPROPERTIES "Wood" 6 "Wood_Solid"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 1 "dirt"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 2 "grass"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 3 "gravel"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 4 "mud"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 5 "quicksand"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 6 "sand"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 7 "slipperyslime"
TRACKASSEMBLY_PHYSPROPERTIES "Terrain" 8 "antlionsand"
TRACKASSEMBLY_PHYSPROPERTIES "Liquid" 1 "slime"
TRACKASSEMBLY_PHYSPROPERTIES "Liquid" 2 "water"
TRACKASSEMBLY_PHYSPROPERTIES "Liquid" 3 "wade"
TRACKASSEMBLY_PHYSPROPERTIES "Frozen" 1 "snow"
TRACKASSEMBLY_PHYSPROPERTIES "Frozen" 2 "ice"
TRACKASSEMBLY_PHYSPROPERTIES "Frozen" 3 "gmod_ice"
TRACKASSEMBLY_PHYSPROPERTIES "Miscellaneous" 1 "carpet"
TRACKASSEMBLY_PHYSPROPERTIES "Miscellaneous" 2 "ceiling_tile"
TRACKASSEMBLY_PHYSPROPERTIES "Miscellaneous" 3 "computer"
TRACKASSEMBLY_PHYSPROPERTIES "Miscellaneous" 4 "pottery"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 1 "alienflesh"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 2 "antlion"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 3 "armorflesh"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 4 "bloodyflesh"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 5 "flesh"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 6 "foliage"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 7 "watermelon"
TRACKASSEMBLY_PHYSPROPERTIES "Organic" 8 "zombieflesh"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 1 "jeeptire"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 2 "jalopytire"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 3 "rubber"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 4 "rubbertire"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 5 "slidingrubbertire"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 6 "slidingrubbertire_front"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 7 "slidingrubbertire_rear"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 8 "brakingrubbertire"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 9 "tile"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 10 "paper"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 11 "papercup"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 12 "cardboard"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 13 "plaster"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 14 "plastic_barrel"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 15 "plastic_barrel_buoyant"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 16 "Plastic_Box"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 17 "plastic"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 18 "glass"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 19 "glassbottle"
TRACKASSEMBLY_PHYSPROPERTIES "Manufactured" 20 "combine_glass"

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
# StoreExternalDatabase( INS ): 01/22/17 17:15:10 [ LUA ]
# Data settings: MODELBASE,MODELADD,ENTCLASS,LINEID,POSOFF,ANGOFF,MOVETYPE,PHYSINIT,DRSHADOW,PHMOTION,PHYSLEEP,SETSOLID
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/sw_lever.mdl","buttonswitch",1,"-100,125,0","NULL",-1,-1,-1,0,-1,-1})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_r_switcher1.mdl","prop_dynamic",2,"NULL","NULL",6,6,-1,-1,1,6})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_r_switcher2.mdl","prop_dynamic",3,"NULL","NULL",6,6,-1,0,-1,0})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/sw_lever.mdl","buttonswitch",1,"-100,-125,0","0,180,0",-1,-1,-1,0,-1,-1})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_l_switcher1.mdl","prop_dynamic",2,"NULL","NULL",6,6,-1,-1,1,6})
asmlib.InsertRecord("ADDITIONS", {"models/shinji85/train/rail_l_switcher2.mdl","prop_dynamic",3,"NULL","NULL",6,6,-1,0,-1,0})

View File

@ -1,91 +0,0 @@
# StoreExternalDatabase( INS ): 01/22/17 17:15:10 [ LUA ]
# Data settings: TYPE,LINEID,NAME
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",1,"default"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",2,"default_silent"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",3,"floatingstandable"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",4,"item"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",5,"ladder"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",6,"no_decal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",7,"player"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Special",8,"player_control_clip"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",1,"brick"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",2,"concrete"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",3,"concrete_block"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",4,"gravel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Concrete",5,"rock"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",1,"canister"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",2,"chain"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",3,"chainlink"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",4,"combine_metal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",5,"crowbar"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",6,"floating_metal_barrel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",7,"grenade"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",8,"gunship"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",9,"metal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",10,"metal_barrel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",11,"metal_bouncy"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",12,"Metal_Box"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",13,"metal_seafloorcar"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",14,"metalgrate"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",15,"metalpanel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",16,"metalvent"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",17,"metalvehicle"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",18,"paintcan"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",19,"popcan"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",20,"roller"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",21,"slipperymetal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",22,"solidmetal"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",23,"strider"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Metal",24,"weapon"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",1,"wood"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",2,"Wood_Box"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",3,"Wood_Furniture"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",4,"Wood_Plank"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",5,"Wood_Panel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Wood",6,"Wood_Solid"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",1,"dirt"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",2,"grass"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",3,"gravel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",4,"mud"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",5,"quicksand"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",6,"sand"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",7,"slipperyslime"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Terrain",8,"antlionsand"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Liquid",1,"slime"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Liquid",2,"water"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Liquid",3,"wade"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Frozen",1,"snow"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Frozen",2,"ice"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Frozen",3,"gmod_ice"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",1,"carpet"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",2,"ceiling_tile"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",3,"computer"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Miscellaneous",4,"pottery"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",1,"alienflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",2,"antlion"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",3,"armorflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",4,"bloodyflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",5,"flesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",6,"foliage"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",7,"watermelon"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Organic",8,"zombieflesh"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",1,"jeeptire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",2,"jalopytire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",3,"rubber"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",4,"rubbertire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",5,"slidingrubbertire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",6,"slidingrubbertire_front"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",7,"slidingrubbertire_rear"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",8,"brakingrubbertire"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",9,"tile"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",10,"paper"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",11,"papercup"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",12,"cardboard"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",13,"plaster"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",14,"plastic_barrel"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",15,"plastic_barrel_buoyant"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",16,"Plastic_Box"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",17,"plastic"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",18,"glass"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",19,"glassbottle"})
asmlib.InsertRecord("PHYSPROPERTIES", {"Manufactured",20,"combine_glass"})

File diff suppressed because it is too large Load Diff

View File

@ -1,373 +0,0 @@
--[[
* 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 = "Anyone's Horrible Trackpack" -- 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. Apply the ID of your addon here!
* This is needed so TA user can open GUI to your addon webpage.
* Open your workshop addon with any brawser then copy the visited URL
* https://steamcommunity.com/sharedfiles/filedetails/?id=287012681
* This URL is used as an example obtained from the TA workshop link
* You only need the number at the end. Write it down as a string below.
]]
asmlib.WorkshopID(myAddon , "2194528273")
--[[
* 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/set/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 n = m:gsub("models/anytracks/","")
local r = n:match("^%a+"); n = n:gsub("%.mdl","")
n = n:gsub(r, ""):sub(2, -1); return r, n 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/anytracks/straight/hs_32.mdl"] = {
{myType, "Hs 32", gsSymOff, " 30,0,4", "0, 16,4", "0, 90,0", gsMissDB},
{myType, "Hs 32", gsSymOff, "-30,0,4", "0,-16,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_64.mdl"] = {
{myType, "Hs 64", gsSymOff, gsMissDB, "0, 32,4", "0, 90,0", gsMissDB},
{myType, "Hs 64", gsSymOff, gsMissDB, "0,-32,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_128.mdl"] = {
{myType, "Hs 128", gsSymOff, gsMissDB, "0, 64,4", "0, 90,0", gsMissDB},
{myType, "Hs 128", gsSymOff, gsMissDB, "0,-64,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_256.mdl"] = {
{myType, "Hs 256", gsSymOff, gsMissDB, "0, 128,4", "0, 90,0", gsMissDB},
{myType, "Hs 256", gsSymOff, gsMissDB, "0,-128,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_512.mdl"] = {
{myType, "Hs 512", gsSymOff, gsMissDB, "0, 256,4", "0, 90,0", gsMissDB},
{myType, "Hs 512", gsSymOff, gsMissDB, "0,-256,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_1024.mdl"] = {
{myType, "Hs 1024", gsSymOff, gsMissDB, "0, 512,4", "0, 90,0", gsMissDB},
{myType, "Hs 1024", gsSymOff, gsMissDB, "0,-512,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_2048.mdl"] = {
{myType, "Hs 2048", gsSymOff, gsMissDB, "0, 1024,4", "0, 90,0", gsMissDB},
{myType, "Hs 2048", gsSymOff, gsMissDB, "0,-1024,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_4096.mdl"] = {
{myType, "Hs 4096", gsSymOff, gsMissDB, "0, 2048,4", "0, 90,0", gsMissDB},
{myType, "Hs 4096", gsSymOff, gsMissDB, "0,-2048,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/hs_8192.mdl"] = {
{myType, "Hs 8192", gsSymOff, gsMissDB, "0, 4096,4", "0, 90,0", gsMissDB},
{myType, "Hs 8192", gsSymOff, gsMissDB, "0,-4096,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_32.mdl"] = {
{myType, "S 32", gsSymOff, " 30,0,4", "0, 16,4", "0, 90,0", gsMissDB},
{myType, "S 32", gsSymOff, "-30,0,4", "0,-16,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_64.mdl"] = {
{myType, "S 64", gsSymOff, gsMissDB, "0, 32,4", "0, 90,0", gsMissDB},
{myType, "S 64", gsSymOff, gsMissDB, "0,-32,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_128.mdl"] = {
{myType, "S 128", gsSymOff, gsMissDB, "0, 64,4", "0, 90,0", gsMissDB},
{myType, "S 128", gsSymOff, gsMissDB, "0,-64,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_256.mdl"] = {
{myType, "S 256", gsSymOff, gsMissDB, "0, 128,4", "0, 90,0", gsMissDB},
{myType, "S 256", gsSymOff, gsMissDB, "0,-128,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_512.mdl"] = {
{myType, "S 512", gsSymOff, gsMissDB, "0, 256,4", "0, 90,0", gsMissDB},
{myType, "S 512", gsSymOff, gsMissDB, "0,-256,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_1024.mdl"] = {
{myType, "S 1024", gsSymOff, gsMissDB, "0, 512,4", "0, 90,0", gsMissDB},
{myType, "S 1024", gsSymOff, gsMissDB, "0,-512,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_2048.mdl"] = {
{myType, "S 2048", gsSymOff, gsMissDB, "0, 1024,4", "0, 90,0", gsMissDB},
{myType, "S 2048", gsSymOff, gsMissDB, "0,-1024,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_4096.mdl"] = {
{myType, "S 4096", gsSymOff, gsMissDB, "0, 2048,4", "0, 90,0", gsMissDB},
{myType, "S 4096", gsSymOff, gsMissDB, "0,-2048,4", "0,-90,0", gsMissDB}
},
["models/anytracks/straight/s_8192.mdl"] = {
{myType, "S 8192", gsSymOff, gsMissDB, "0, 4096,4", "0, 90,0", gsMissDB},
{myType, "S 8192", gsSymOff, gsMissDB, "0,-4096,4", "0,-90,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 = {}
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

@ -2,6 +2,8 @@ QuickSort
SetNumSlider
ModelToName: Cut
ModelToName: Sub
BIND_PRESS:
RegisterPOA: Store
ModelToName: App
DefaultType: Avoided
LocatePOA: Missing ID
@ -28,6 +30,7 @@ DRAW_RADMENU: Release
DRAW_RADMENU: Hook mismatch
DRAW_RADMENU: Scroll release
DRAW_RADMENU: Menu disabled
DRAW_RADMENU: %(gmod_tool%) Swep other
DRAW_GHOSTS: Swep invalid
DRAW_GHOSTS: Swep not tool
DRAW_GHOSTS: %(gmod_tool%) Swep other
@ -41,7 +44,6 @@ DRAW_PHYSGUN: Swep invalid
DRAW_PHYSGUN: Extension disabled
DRAW_PHYSGUN: Trace not piece
DRAW_PHYSGUN: %(weapon_physgun%) Swep other
DRAW_RADMENU: %(gmod_tool%) Swep other
POINT_SELECT: Bind not pressed
POINT_SELECT: Active key missing
BIND_PRESS: Hook mismatch
@ -52,9 +54,12 @@ BIND_PRESS: Bind not pressed
BIND_PRESS: %(gmod_tool%) Swep other
POPULATE_ENTITY: Handler
UPDATE_CONTEXTVAL: Entity
TimerRestart: Memory manager skip
BorderValue: Missing
GetBuilderNick: Key mismatch
GetBuilderID: Builder object missing
GetHookInfo: %(gmod_tool%) Swep other
GetHookInfo: %(weapon_physgun%) Swep other
GetHookInfo: Swep invalid
GetHookInfo: Swep other
GetHookInfo: Mode different
GetHookInfo: Tool invalid
GetEntityHitID: Trace skip

View File

@ -9,7 +9,8 @@
]]--
-- Local reference to the module.
local asmlib = trackasmlib
local asmlib = trackasmlib; if(not asmlib) then -- Module present
ErrorNoHaltWithStack("TOOL: Track assembly tool module fail!\n"); return end
--[[
* This is your addon name. It is mandatory and it must be string.
@ -19,6 +20,9 @@ local asmlib = trackasmlib
]]
local myAddon = "Test's track pack"
-- Log messages identifier. Leave DSV here or change it if you like
local mySource = "DSV"
--[[
* Change this if you want to use different in-game type
* You can also use multiple types myType1, myType2,
@ -27,17 +31,6 @@ local myAddon = "Test's track pack"
]]--
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:
* https://wiki.facepunch.com/gmod/Global.print
* https://wiki.facepunch.com/gmod/Global.error
* https://wiki.facepunch.com/gmod/Global.Error
* https://wiki.facepunch.com/gmod/Global.ErrorNoHalt
* https://wiki.facepunch.com/gmod/Global.ErrorNoHaltWithStack
]]
local myError = ErrorNoHalt
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix
@ -45,111 +38,17 @@ local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix
-- 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 = (myScript.." > ("..myAddon.."): "..tostring(vMesg)) -- Make sure the message is string
if(asmlib) then asmlib.LogInstance(sMesg) end; myError(sMesg) -- Output the message into the logs
end
-- There is something to error about stop the execution and report it
if(not asmlib) then myThrowError("Failed loading the required module!"); return end
--[[
* 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 )
]]--
local function mySyncTable(sName, tData, bRepl)
if(not asmlib.IsEmpty(tData)) then -- Somrting to be processed. Do stuff when the table is not empty
asmlib.LogInstance("SynchronizeDSV START <"..myPrefix..">") -- Signal start synchronization
if(not asmlib.SynchronizeDSV(sName, tData, bRepl, myPrefix)) then -- Attempt to synchronize
myThrowError("Failed to synchronize: "..sName) -- Raise error when fails to sync tracks data
else -- Successful. You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV START <"..myPrefix..">") -- Signal start translation
if(not asmlib.TranslateDSV(sName, myPrefix)) then -- Attempt to translate the DSV to Lua source
myThrowError("Failed to translate DSV: "..sName) end -- Raise error when fails
asmlib.LogInstance("TranslateDSV OK <"..myPrefix..">") -- Translation is successful
end -- Now we have Lua inserts and DSV. Otherwise sent empty table and print status in logs
else asmlib.LogInstance("SynchronizeDSV EMPTY <"..myPrefix..">") end -- Nothing to be done
end
--[[
* 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/set/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` )
]]--
local function myRegisterDSV(bSkip)
asmlib.LogInstance("RegisterDSV START <"..myPrefix..">")
if(bSkip) 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 OK <"..myPrefix..">")
end
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 )
]]--
local function myExportCategory(tCatg)
asmlib.LogInstance("ExportCategory START <"..myPrefix..">")
if(CLIENT) then -- Category handling is client side only
if(not asmlib.IsEmpty(tCatg)) then
if(not asmlib.ExportCategory(3, tCatg, myPrefix)) then
myThrowError("Failed to synchronize category")
end; asmlib.LogInstance("ExportCategory OK <"..myPrefix..">")
else asmlib.LogInstance("ExportCategory SKIP <"..myPrefix..">") end
else asmlib.LogInstance("ExportCategory SERVER <"..myPrefix..">") end
end
mySource = tostring(mySource or ""):gsub("^%W+", "")
mySource = (asmlib.IsBlank(mySource) and "DSV" or mySource)
-- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsDirDSV = asmlib.GetOpVar("DIRPATH_DSV")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsModeDB = asmlib.GetOpVar("MODE_DATABASE")
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")
local myDsv = asmlib.GetLibraryPath(gsDirDSV, myPrefix, gsToolPF.."PIECES")
--[[
* This flag is used when the track pieces list needs to be processed.
@ -162,14 +61,109 @@ local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
]]--
local myFlag = file.Exists(myDsv, "DATA")
--[[
* 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 ThrowError(vMesg)
local sMesg = (myScript.." > ("..myAddon.."): "..tostring(vMesg)) -- Convert to string
if(asmlib) then asmlib.LogInstance(sMesg, mySource) end -- Update the tool logs
ErrorNoHaltWithStack(sMesg.."\n") -- Produce an error without breaking the stack
end
--[[
* This logic statement is needed for reporting the error
* in the console if the process fails.
*
@ bSuccess = trackasmlib.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 = trackasmlib.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 )
]]--
local function DoSynchronize(sName, tData, bRepl)
local sRep = asmlib.GetReport(myPrefix, sName) -- Generate report if error is present
if(not asmlib.IsEmpty(tData)) then -- Something to be processed. Do stuff when the table is not empty
asmlib.LogInstance("Synchronization START "..sRep, mySource) -- Signal start synchronization
if(not asmlib.SynchronizeDSV(sName, tData, bRepl, myPrefix)) then -- Attempt to synchronize
ThrowError("Failed to synchronize content") -- Raise error when fails to sync tracks data
else -- Successful. You are saving me from all the work for manually generating these
asmlib.LogInstance("Translation START "..sRep, mySource) -- Signal start translation
if(not asmlib.TranslateDSV(sName, myPrefix)) then -- Attempt to translate the DSV to Lua source
ThrowError("Failed to translate content") end -- Raise error when fails
asmlib.LogInstance("Translation OK "..sRep, mySource) -- Translation is successful
end -- Now we have Lua inserts and DSV. Otherwise sent empty table and print status in logs
else asmlib.LogInstance("Synchronization EMPTY "..sRep, mySource) end -- Nothing to be done
end
--[[
* 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/set/trackasmlib_dsv.txt)
* a.k.a the DATA folder of Garry's mod.
*
* @bSuccess = trackasmlib.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` )
]]--
local function DoRegister(bSkip)
local sRep = asmlib.GetReport(myPrefix, bSkip) -- Generate report if error is present
asmlib.LogInstance("Registration START "..sRep, mySource)
if(bSkip) then -- Your DSV must be registered only once when loading for the first time
asmlib.LogInstance("Registration SKIP "..sRep, mySource)
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
ThrowError("Failed to register content") -- Throw the error if fails
end -- Third argument is the delimiter. The default tab is used
asmlib.LogInstance("Registration OK "..sRep, mySource)
end
end
--[[
* This logic statement is needed for reporting the error in the console if the
* process fails.
*
@ bSuccess = trackasmlib.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 )
]]--
local function DoCategory(tCatg)
local sRep = asmlib.GetReport(myPrefix, bSkip) -- Generate report if error is present
asmlib.LogInstance("Category export START "..sRep, mySource)
if(CLIENT) then -- Category handling is client side only
if(not asmlib.IsEmpty(tCatg)) then
if(not asmlib.ExportCategory(3, tCatg, myPrefix)) then
ThrowError("Failed to synchronize category")
end; asmlib.LogInstance("Category export OK "..sRep, mySource)
else asmlib.LogInstance("Category export SKIP "..sRep, mySource) end
else asmlib.LogInstance("Category export SERVER "..sRep, mySource) end
end
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}", mySource)
-- Register the addon to the workshop ID list
asmlib.WorkshopID(myAddon, "287012681")
-- Register the addon to the pluggable DSV list
myRegisterDSV(myFlag)
-- Register the addon to the plugable DSV list
local bS, vO = pcall(DoRegister, myFlag)
if(not bS) then ThrowError("Registration error: "..vO) end
--[[
* This is used if you want to make internal categories for your addon
@ -179,7 +173,7 @@ myRegisterDSV(myFlag)
* 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
* for multiple track types, just put their hashes in the table below
* and make every track point to its dedicated category handler.
]]--
local myCategory = {
@ -199,8 +193,9 @@ local myCategory = {
]]}
}
-- Register the addon category to the pluggable DSV list
myExportCategory(myCategory)
-- Register the addon category to the plugable DSV list
local bS, vO = pcall(DoCategory, myCategory)
if(not bS) then ThrowError("Category error: "..vO) end
--[[
* Create a table and populate it as shown below
@ -225,7 +220,7 @@ myExportCategory(myCategory)
* 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.
* a given model key. Disabling this, makes it use 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 location vector that TA searches and selects the related ORIGIN for.
@ -253,8 +248,9 @@ local myPieces = {
}
}
-- Register the addon PIECES to the pluggable DSV list
mySyncTable("PIECES", myPieces, true)
-- Register the addon PIECES to the plugable DSV list
local bS, vO = pcall(DoSynchronize, "PIECES", myPieces, true)
if(not bS) then ThrowError("PIECES error: "..vO) end
--[[
* Create a table and populate it as shown below
@ -262,14 +258,14 @@ mySyncTable("PIECES", myPieces, true)
* 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.
* MODELBASE > This string contains the path to your base /*.mdl/ file the additions will 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.
* When used in /DSV/ mode ( like seen below ) it 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. When disabled or missing it defaults to a normal prop.
* 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.
* a given model key. Disabling this, makes it use 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.
@ -290,8 +286,9 @@ mySyncTable("PIECES", myPieces, true)
]]--
local myAdditions = {}
-- Register the addon ADDITIONS to the pluggable DSV list
mySyncTable("ADDITIONS", myAdditions, true)
-- Register the addon ADDITIONS to the plugable DSV list
local bS, vO = pcall(DoSynchronize, "ADDITIONS", myAdditions, true)
if(not bS) then ThrowError("ADDITIONS error: "..vO) end
--[[
* Create a table and populate it as shown below
@ -301,17 +298,18 @@ mySyncTable("ADDITIONS", myAdditions, true)
* {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.
* When used in /DSV/ mode ( like seen below ) it 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.
* a given model key. Disabling this, makes it use 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 = {}
-- Register the addon PHYSPROPERTIES to the pluggable DSV list
mySyncTable("PHYSPROPERTIES", myPhysproperties, true)
-- Register the addon PHYSPROPERTIES to the plugable DSV list
local bS, vO = pcall(DoSynchronize, "PHYSPROPERTIES", myPhysproperties, true)
if(not bS) then ThrowError("PHYSPROPERTIES error: "..vO) end
asmlib.LogInstance("<<< "..myScript)
asmlib.LogInstance("<<< "..myScript, mySource)

View File

@ -9,7 +9,8 @@
]]--
-- Local reference to the module.
local asmlib = trackasmlib
local asmlib = trackasmlib; if(not asmlib) then -- Module present
ErrorNoHaltWithStack("TOOL: Track assembly tool module fail!\n"); return end
-- Change this to your addon name.
local myAddon = "SligWolf's Minitrains" -- Your addon name goes here
@ -22,24 +23,16 @@ local myAddon = "SligWolf's Minitrains" -- 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:
* https://wiki.facepunch.com/gmod/Global.print
* https://wiki.facepunch.com/gmod/Global.error
* https://wiki.facepunch.com/gmod/Global.Error
* https://wiki.facepunch.com/gmod/Global.ErrorNoHalt
* https://wiki.facepunch.com/gmod/Global.ErrorNoHaltWithStack
]]
local myError = ErrorNoHalt
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = asmlib.GetInstPref() -- Addon prefix
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("\\","/")
mySource = tostring(mySource or ""):gsub("^%W+", "")
mySource = (asmlib.IsBlank(mySource) and "DSV" or mySource)
--[[
* This function defines what happens when there is an error present
* Usually you can tell Gmod that you want it to generate an error
@ -50,232 +43,244 @@ local myScript = tostring(debug.getinfo(1).source or "N/A")
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 )
ErrorNoHaltWithStack(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 gsModeDB = asmlib.GetOpVar("MODE_DATABASE")
local gsFormPF = asmlib.GetOpVar("FORM_PREFIXDSV")
-- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsDirDSV = asmlib.GetOpVar("DIRPATH_DSV")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsModeDB = asmlib.GetOpVar("MODE_DATABASE")
local gsPrfGen = asmlib.GetOpVar("DBEXP_PREFGEN")
-- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
asmlib.GetOpVar("DIRPATH_DSV")..
gsFormPF:format(myPrefix, gsToolPF.."PIECES")
local myPath = { -- This contains the path to generic DSV
asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."PIECES"),
asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."CATEGORY"),
asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."ADDITIONS"),
asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."PHYSPROPERTIES")
}
-- 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.."}", mySource)
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
-- Check for exported generic database for PIECES
-- Evaluated to TRUE when the generic database is exported
if(not file.Exists(myPath[1], "DATA")) then
if(not myFlag) then -- Check for exported global database
local PIECES = asmlib.GetBuilderNick("PIECES")
local PIECES = asmlib.GetBuilderNick("PIECES")
-- Check for exported generic database for CATEGORY
-- Evaluated to TRUE when the generic category is exported
if(not file.Exists(myPath[2], "DATA")) then
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 also makes it use {0,0,0}
* You can also fill it with attachment event /!/ followed by your attachment name. It's mandatory
* 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. It's mandatory
* 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
local r = m:gsub("models/props_phx/construct/",""):gsub("_","/")
local s = r:find("/"); r = s and r:sub(1,s-1) or nil
local n = nil
if(r) then
if(r == "metal" ) then n = "My metal plate" end
if(r == "windows") then n = "My glass plate" end
end
r = r and r:gsub("^%l", string.upper) or nil
p = r and {r} or nil
return p, n
end
]])
end
asmlib.LogInstance("<<< "..myScript)
else
myThrowError("Failed loading the required module")
asmlib.WorkshopID(myAddon, "287012681")
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}
* 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 ) it 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 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 location vector that TA searches and selects the related ORIGIN for.
* An empty string is treated as taking the ORIGIN when assuming player traces can hit the origin
* Disabling via /#/ makes it take the ORIGIN. Used to disable a point but keep original data
* You can also fill it with attachment event /!/ followed by your attachment name.
* 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 via /#/ also makes it use {0,0,0}
* You can also fill it with attachment event /!/ followed by your attachment name. It's mandatory
* 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 via /#/ also makes it use {0,0,0}
* You can also fill it with attachment event /!/ followed by your attachment name. It's mandatory
* 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.
* Disabling via /#/ makes it take the NULL value. In this case the model is spawned as a 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)

View File

@ -30,8 +30,8 @@ set emd_chew_dbase=%emd_chew_gmod%\garrysmod\data\trackassembly\exp\trackasmlib_
set emd_chew_skip=%emd_chew_repo%\data\trackassembly\tools\peaces_manager\models_ignored.txt
:: How many addons are to be processed
set emd_chew_addfrm=30
set emd_chew_addcnt=30
set emd_chew_addfrm=31
set emd_chew_addcnt=31
:: GMA addons to be processed
set emd_chew_addlst[1]=740453553
@ -64,6 +64,7 @@ set emd_chew_addlst[27]=1955876643
set emd_chew_addlst[28]=3071058065
set emd_chew_addlst[29]=3297918081
set emd_chew_addlst[30]=3314861708
set emd_chew_addlst[31]=2233731395
:: Folder list for extraction and the directories they will be extracted
set emd_chew_adddir[1]=AlexCookie's 2ft track pack
@ -96,6 +97,7 @@ set emd_chew_adddir[27]=Trackmania United Props
set emd_chew_adddir[28]=RockMan's Fortification
set emd_chew_adddir[29]=SligWolf's Suspension Train
set emd_chew_adddir[30]=Modular City Street
set emd_chew_adddir[31]=Scene Builder
:: Show the current folder
echo Running in: %emd_chew_pathb%

View File

@ -1,4 +1,4 @@
# CacheQueryPanel:(true) 20-09-10 17:47:37 [ LUA ]
# ExportSyncDB:(true) 20-09-10 17:47:37 [ LUA ]
"models/alexcookie/2ft/curve/curve_90_512.mdl","AlexCookie's 2ft track pack","Curve 90 512"
"models/alexcookie/2ft/misc/end1.mdl","AlexCookie's 2ft track pack","End1"
"models/alexcookie/2ft/straight/straight_1024.mdl","AlexCookie's 2ft track pack","Straight 1024"

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,8 @@
]]--
-- Local reference to the module.
local asmlib = trackasmlib
local asmlib = trackasmlib; if(not asmlib) then -- Module present
ErrorNoHaltWithStack("TOOL: Track assembly tool module fail!\n"); return end
--[[
* This is your addon name. It is mandatory and it must be string.
@ -19,6 +20,9 @@ local asmlib = trackasmlib
]]
local myAddon = "Shinji85's Rails" -- Your addon name goes here
-- Log messages identifier. Leave DSV here or change it if you like
local mySource = "DSV"
--[[
* Change this if you want to use different in-game type
* You can also use multiple types myType1, myType2,
@ -27,17 +31,6 @@ local myAddon = "Shinji85's Rails" -- 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:
* https://wiki.facepunch.com/gmod/Global.print
* https://wiki.facepunch.com/gmod/Global.error
* https://wiki.facepunch.com/gmod/Global.Error
* https://wiki.facepunch.com/gmod/Global.ErrorNoHalt
* https://wiki.facepunch.com/gmod/Global.ErrorNoHaltWithStack
]]
local myError = ErrorNoHalt
-- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix
@ -45,110 +38,17 @@ local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix
-- 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 = (myScript.." > ("..myAddon.."): "..tostring(vMesg)) -- Make sure the message is string
if(asmlib) then asmlib.LogInstance(sMesg) end; myError(sMesg) -- Output the message into the logs
end
-- There is something to error about stop the execution and report it
if(not asmlib) then myThrowError("Failed loading the required module!"); return end
--[[
* 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 )
]]--
local function mySyncTable(sName, tData, bRepl)
if(not asmlib.IsEmpty(tData)) then -- Something to be processed. Do stuff when the table is not empty
asmlib.LogInstance("SynchronizeDSV START <"..myPrefix..">") -- Signal start synchronization
if(not asmlib.SynchronizeDSV(sName, tData, bRepl, myPrefix)) then -- Attempt to synchronize
myThrowError("Failed to synchronize: "..sName) -- Raise error when fails to sync tracks data
else -- Successful. You are saving me from all the work for manually generating these
asmlib.LogInstance("TranslateDSV START <"..myPrefix..">") -- Signal start translation
if(not asmlib.TranslateDSV(sName, myPrefix)) then -- Attempt to translate the DSV to Lua source
myThrowError("Failed to translate DSV: "..sName) end -- Raise error when fails
asmlib.LogInstance("TranslateDSV OK <"..myPrefix..">") -- Translation is successful
end -- Now we have Lua inserts and DSV. Otherwise sent empty table and print status in logs
else asmlib.LogInstance("SynchronizeDSV EMPTY <"..myPrefix..">") end -- Nothing to be done
end
--[[
* 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/set/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` )
]]--
local function myRegisterDSV(bSkip)
asmlib.LogInstance("RegisterDSV START <"..myPrefix..">")
if(bSkip) 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 OK <"..myPrefix..">")
end
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 )
]]--
local function myExportCategory(tCatg)
asmlib.LogInstance("ExportCategory START <"..myPrefix..">")
if(CLIENT) then -- Category handling is client side only
if(not asmlib.IsEmpty(tCatg)) then
if(not asmlib.ExportCategory(3, tCatg, myPrefix)) then
myThrowError("Failed to synchronize category")
end; asmlib.LogInstance("ExportCategory OK <"..myPrefix..">")
else asmlib.LogInstance("ExportCategory SKIP <"..myPrefix..">") end
else asmlib.LogInstance("ExportCategory SERVER <"..myPrefix..">") end
end
mySource = tostring(mySource or ""):gsub("^%W+", "")
mySource = (asmlib.IsBlank(mySource) and "DSV" or mySource)
-- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsDirDSV = asmlib.GetOpVar("DIRPATH_DSV")
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")
local myDsv = asmlib.GetLibraryPath(gsDirDSV, myPrefix, gsToolPF.."PIECES")
--[[
* This flag is used when the track pieces list needs to be processed.
@ -161,14 +61,109 @@ local myDsv = asmlib.GetOpVar("DIRPATH_BAS")..
]]--
local myFlag = file.Exists(myDsv, "DATA")
--[[
* 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 ThrowError(vMesg)
local sMesg = (myScript.." > ("..myAddon.."): "..tostring(vMesg)) -- Convert to string
if(asmlib) then asmlib.LogInstance(sMesg, mySource) end -- Update the tool logs
ErrorNoHaltWithStack(sMesg.."\n") -- Produce an error without breaking the stack
end
--[[
* This logic statement is needed for reporting the error
* in the console if the process fails.
*
@ bSuccess = trackasmlib.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 = trackasmlib.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 )
]]--
local function DoSynchronize(sName, tData, bRepl)
local sRep = asmlib.GetReport(myPrefix, sName) -- Generate report if error is present
if(not asmlib.IsEmpty(tData)) then -- Something to be processed. Do stuff when the table is not empty
asmlib.LogInstance("Synchronization START "..sRep, mySource) -- Signal start synchronization
if(not asmlib.SynchronizeDSV(sName, tData, bRepl, myPrefix)) then -- Attempt to synchronize
ThrowError("Failed to synchronize content") -- Raise error when fails to sync tracks data
else -- Successful. You are saving me from all the work for manually generating these
asmlib.LogInstance("Translation START "..sRep, mySource) -- Signal start translation
if(not asmlib.TranslateDSV(sName, myPrefix)) then -- Attempt to translate the DSV to Lua source
ThrowError("Failed to translate content") end -- Raise error when fails
asmlib.LogInstance("Translation OK "..sRep, mySource) -- Translation is successful
end -- Now we have Lua inserts and DSV. Otherwise sent empty table and print status in logs
else asmlib.LogInstance("Synchronization EMPTY "..sRep, mySource) end -- Nothing to be done
end
--[[
* 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/set/trackasmlib_dsv.txt)
* a.k.a the DATA folder of Garry's mod.
*
* @bSuccess = trackasmlib.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` )
]]--
local function DoRegister(bSkip)
local sRep = asmlib.GetReport(myPrefix, bSkip) -- Generate report if error is present
asmlib.LogInstance("Registration START "..sRep, mySource)
if(bSkip) then -- Your DSV must be registered only once when loading for the first time
asmlib.LogInstance("Registration SKIP "..sRep, mySource)
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
ThrowError("Failed to register content") -- Throw the error if fails
end -- Third argument is the delimiter. The default tab is used
asmlib.LogInstance("Registration OK "..sRep, mySource)
end
end
--[[
* This logic statement is needed for reporting the error in the console if the
* process fails.
*
@ bSuccess = trackasmlib.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 )
]]--
local function DoCategory(tCatg)
local sRep = asmlib.GetReport(myPrefix, bSkip) -- Generate report if error is present
asmlib.LogInstance("Category export START "..sRep, mySource)
if(CLIENT) then -- Category handling is client side only
if(not asmlib.IsEmpty(tCatg)) then
if(not asmlib.ExportCategory(3, tCatg, myPrefix)) then
ThrowError("Failed to synchronize category")
end; asmlib.LogInstance("Category export OK "..sRep, mySource)
else asmlib.LogInstance("Category export SKIP "..sRep, mySource) end
else asmlib.LogInstance("Category export SERVER "..sRep, mySource) end
end
-- Tell TA what custom script we just called don't touch it
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}")
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}", mySource)
-- Register the addon to the workshop ID list
asmlib.WorkshopID(myAddon, "326640186")
-- Register the addon to the plugable DSV list
myRegisterDSV(myFlag)
local bS, vO = pcall(DoRegister, myFlag)
if(not bS) then ThrowError("Registration error: "..vO) end
--[[
* This is used if you want to make internal categories for your addon
@ -195,7 +190,8 @@ local myCategory = {
}
-- Register the addon category to the plugable DSV list
myExportCategory(myCategory)
local bS, vO = pcall(DoCategory, myCategory)
if(not bS) then ThrowError("Category error: "..vO) end
--[[
* Create a table and populate it as shown below
@ -220,7 +216,7 @@ myExportCategory(myCategory)
* 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.
* a given model key. Disabling this, makes it use 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 location vector that TA searches and selects the related ORIGIN for.
@ -344,7 +340,8 @@ local myPieces = {
}
-- Register the addon PIECES to the plugable DSV list
mySyncTable("PIECES", myPieces, true)
local bS, vO = pcall(DoSynchronize, "PIECES", myPieces, true)
if(not bS) then ThrowError("PIECES error: "..vO) end
--[[
* Create a table and populate it as shown below
@ -352,14 +349,14 @@ mySyncTable("PIECES", myPieces, true)
* 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.
* MODELBASE > This string contains the path to your base /*.mdl/ file the additions will 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.
* When used in /DSV/ mode ( like seen below ) it 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. When disabled or missing it defaults to a normal prop.
* 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.
* a given model key. Disabling this, makes it use 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.
@ -392,7 +389,8 @@ local myAdditions = {
}
-- Register the addon ADDITIONS to the plugable DSV list
mySyncTable("ADDITIONS", myAdditions, true)
local bS, vO = pcall(DoSynchronize, "ADDITIONS", myAdditions, true)
if(not bS) then ThrowError("ADDITIONS error: "..vO) end
--[[
* Create a table and populate it as shown below
@ -402,10 +400,10 @@ mySyncTable("ADDITIONS", myAdditions, true)
* {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.
* When used in /DSV/ mode ( like seen below ) it 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.
* a given model key. Disabling this, makes it use 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.
@ -413,6 +411,7 @@ mySyncTable("ADDITIONS", myAdditions, true)
local myPhysproperties = {}
-- Register the addon PHYSPROPERTIES to the plugable DSV list
mySyncTable("PHYSPROPERTIES", myPhysproperties, true)
local bS, vO = pcall(DoSynchronize, "PHYSPROPERTIES", myPhysproperties, true)
if(not bS) then ThrowError("PHYSPROPERTIES error: "..vO) end
asmlib.LogInstance("<<< "..myScript)
asmlib.LogInstance("<<< "..myScript, mySource)

View File

@ -224,10 +224,10 @@ local function getAdditionsLine(sModel, nID)
local defTab = makTab:GetDefinition(); if(not defTab) then
asmlib.LogInstance("No table definition"); return {} end
local stRec = asmlib.CacheQueryAdditions(sModel); if(not stRec) then return {} end
if(not stRec[nID]) then return {} end; stRec = stRec[nID]
local iRow, arData = 2, {} -- The model is missed by the main SELECT
while(defTab[iRow]) do -- Ordered by ID. Get the line per model
arData[iRow-1] = stRec[defTab[iRow][1]]; iRow = (iRow + 1)
if(not stRec[nID]) then return {} end -- There is no line with such number
local arData = {}; stRec = stRec[nID] -- The model is missed by the main SELECT
for iRow = 2, defTab.Size do -- Ordered by ID. Get the line per model
arData[iRow-1] = stRec[defTab[iRow][1]]
end; return arData
end
@ -376,7 +376,7 @@ __e2setcost(20)
e2function number entity:trackasmlibAttachBodyGroups(string sBgpID)
if(not (this and this:IsValid() and enFlag)) then return 0 end
local stRec = asmlib.CacheQueryPiece(this:GetModel()); if(not stRec) then return 0 end
return asmlib.AttachBodyGroups(this, sBgpID) and anyTrue or anyFalse
return asmlib.ApplyBodyGroups(this, sBgpID) and anyTrue or anyFalse
end
__e2setcost(20)

File diff suppressed because it is too large Load Diff

View File

@ -24,6 +24,7 @@ local netWriteBool = net and net.WriteBool
local netWriteAngle = net and net.WriteAngle
local netWriteEntity = net and net.WriteEntity
local netWriteVector = net and net.WriteVector
local netWriteNormal = net and net.WriteNormal
local vguiCreate = vgui and vgui.Create
local stringUpper = string and string.upper
local mathAbs = math and math.abs
@ -141,6 +142,7 @@ TOOL.ClientConVar = {
[ "upspanchor" ] = 0,
[ "crvturnlm" ] = 0.95,
[ "crvleanlm" ] = 0.95,
[ "crvsuprev" ] = 0.45,
[ "flipoverid" ] = ""
}
@ -203,6 +205,10 @@ TOOL.Category = languageGetPhrase and languageGetPhrase("tool."..gsToolNameL..
TOOL.Command = nil -- Command on click (nil for default)
TOOL.ConfigName = nil -- Configure file name (nil for default)
function TOOL:GetSuperElevation()
return mathClamp(self:GetClientNumber("crvsuprev", 0), 0, 1)
end
function TOOL:GetCurveFactor()
return asmlib.GetAsmConvar("curvefact", "FLT")
end
@ -786,15 +792,15 @@ end
--[[
* Uses heuristics to provide the best suitable location the
* curve note closest location can be updated with. Three cases:
* 1. Both neighbors are active points. Intersect their active rays
* 2. Only one node is an active point. Project on its active ray
* 3. None of the neighbors are active points. Project on line bisector
* iD > Curve node index to be updated
* vPnt > The new location to update the node with
* bMute > Mute mode. Used to disable server status messages
* Returns multiple values:
* 1. Curve node calculated heuristics location vector
* 2. The amount of neighbor nodes that are active rays
* V > Curve node calculated heuristics location vector
* N > The amount of neighbor nodes that are active rays
* (2) Both neighbors are active points. Intersect their active rays
* (1) Only one node is an active point. Project on its active ray
* (0) None of the neighbors are active points. Project on line bisector
]]--
function TOOL:GetCurveNodeActive(iD, vPnt, bMute)
local user = self:GetOwner()
@ -862,16 +868,25 @@ function TOOL:CurveClear(bAll, bMute)
tableRemove(tC.Rays)
tableEmpty(tC.Snap); tC.SSize = 0
tableRemove(tC.Base); tC.Size = (tC.Size - 1)
if(tC.Size and tC.Size > 0) then
tC.Norm[tC.Size]:Set(tC.Rays[tC.Size][2]:Up())
end
end
end; return tC -- Returns the updated curve nodes table
end
--[[
* Generates curve transform data structure
* It is used to create data for the curve nodes
* stTrace > Trace structure being used for generation
* bPnt > Whenever the generation is from active point
]]
function TOOL:GetCurveTransform(stTrace, bPnt)
if(not stTrace) then
asmlib.LogInstance("Trace missing", gtLogs); return nil end
if(not stTrace.Hit) then
asmlib.LogInstance("Trace not hit", gtLogs); return nil end
local user = self:GetOwner()
local user, nT = self:GetOwner(), 0
local angsnap = self:GetAngSnap()
local elevpnt = self:GetElevation()
local surfsnap = self:GetSurfaceSnap()
@ -895,11 +910,16 @@ function TOOL:GetCurveTransform(stTrace, bPnt)
tData.Orw:Set(tData.Org); tData.Anw:Set(tData.Ang) -- Transform of POA
tData.ID = oID; tData.Min = oMin -- Point ID and minimum distance
tData.POA = oPOA; tData.Rec = oRec -- POA and cache record
local trRz, trDt = asmlib.GetTraceEntityPoint(eEnt, oID, 30000, asmlib.GetOpVar("VEC_DW"))
if(trRz and trRz.Hit) then
nT = (trDt.length * trRz.Fraction - elevpnt)
asmlib.SetAsmConvar(user, "nextz", nT)
end
end -- Use the track piece active end to create relative curve node
else -- Offset the curve node when it is not driven by an active point
tData.Org:Add(vNrm * elevpnt) -- Apply model active point elevation
end -- Apply the positional and angular offsets to the return value
tData.Org:Add(tData.Ang:Up() * nextz)
tData.Org:Add(tData.Ang:Up() * (nextz - nT))
tData.Org:Add(tData.Ang:Right() * nexty)
tData.Org:Add(tData.Ang:Forward() * nextx)
tData.Ang:RotateAroundAxis(tData.Ang:Up() ,-nextyaw)
@ -908,12 +928,58 @@ function TOOL:GetCurveTransform(stTrace, bPnt)
return tData
end
--[[
* Used to apply super-elevation on the previous node
* according to the location of the next node placed
* Must be run BEFORE inserting the new node placed
* tC > Curve data stricture with the normal modified
* tData > Reference to the node being inserted
]]
function TOOL:ApplySuperElevation(tC, tData, iD)
if(not tData) then -- The node being managed
asmlib.LogInstance("Data missing", gtLogs); return 0 end
if(not tC) then -- The curve containing all nodes
asmlib.LogInstance("Curve missing", gtLogs); return 0 end
local spnflat = self:GetSpawnFlat()
local crvsuprev = self:GetSuperElevation()
if(not (crvsuprev > 0 and not spnflat)) then
asmlib.LogInstance("Auto roll disabled", gtLogs); return 0 end
local iN, nS = tonumber(iD), asmlib.GetOpVar("FULL_SLOPEDG")
if(iN) then
local tR = tC.Rays
local tO, tN = tC.Node, tC.Norm
local vL, vP = tO[iN+1], tO[iN-1]
if(not (vL and vP)) then return 0 end
local vD = Vector(vL); vD:Sub(tData.Org); vD:Normalize()
local vF = Vector(vL); vF:Sub(vP); vF:Normalize()
local aN = vF:AngleEx(tR[iN][2]:Up())
local nP = (crvsuprev * nS) * vD:Dot(aN:Right())
aN:RotateAroundAxis(vF, nP)
local vN = aN:Up(); tN[iN]:Set(vN)
return iN, vN
else
if(not (tC.Size and tC.Size >= 2)) then
asmlib.LogInstance("Two vertices needed", gtLogs); return 0 end
local tR, iN = tC.Rays, tC.Size
local tO, tN = tC.Node, tC.Norm
local vL, vP = tO[iN], tO[iN - 1]
local vD = Vector(tData.Org); vD:Sub(vL); vD:Normalize()
local vF = Vector(tData.Org); vF:Sub(vP); vF:Normalize()
local aN = vF:AngleEx(tR[iN][2]:Up())
local nP = (crvsuprev * nS) * vD:Dot(aN:Right())
aN:RotateAroundAxis(vF, nP)
local vN = aN:Up(); tN[iN]:Set(vN)
return iN, vN
end
end
function TOOL:CurveInsert(stTrace, bPnt, bMute)
local user, model = self:GetOwner(), self:GetModel()
local tData = self:GetCurveTransform(stTrace, bPnt); if(not tData) then
asmlib.LogInstance("Transform missing", gtLogs); return nil end
local tC = asmlib.GetCacheCurve(user); if(not tC) then
asmlib.LogInstance("Curve missing", gtLogs); return nil end
local iN, vN = self:ApplySuperElevation(tC, tData)
tC.Size = (tC.Size + 1) -- Increment stack size. Adding stuff
tableInsert(tC.Node, Vector(tData.Org))
tableInsert(tC.Norm, tData.Ang:Up())
@ -924,11 +990,13 @@ function TOOL:CurveInsert(stTrace, bPnt, bMute)
netStart(gsLibName.."SendCreateCurveNode")
netWriteEntity(user)
netWriteVector(tC.Node[tC.Size])
netWriteVector(tC.Norm[tC.Size])
netWriteNormal(tC.Norm[tC.Size])
netWriteVector(tC.Base[tC.Size])
netWriteVector(tC.Rays[tC.Size][1])
netWriteAngle (tC.Rays[tC.Size][2])
netWriteBool (tC.Rays[tC.Size][3])
netWriteUInt (iN, 16)
if(iN > 0) then netWriteNormal(vN) end
netSend(user)
user:SetNWBool(gsToolPrefL.."engcurve", true)
end
@ -945,7 +1013,30 @@ function TOOL:CurveUpdate(stTrace, bPnt, bMute)
asmlib.Notify(user,"Populate nodes first !","ERROR")
asmlib.LogInstance("Nodes missing", gtLogs); return nil
end
local nrA = self:GetActiveRadius()
local mD, mL = asmlib.GetNearest(tData.Hit, tC.Base)
local bTr = (mD and mD > 0 and mL < nrA^2)
if(bTr) then
if(not bPnt) then
local tN, vF = tC.Node, nil
local elevpnt = self:GetElevation()
local vB, tR = tC.Base[mD], tC.Rays[mD]
local vN, vD = tC.Norm[mD], tC.Node[mD]
local vO = Vector(); vO:Set(vD); vO:Sub(vB)
local nextx, nexty, nextz = vO:Unpack()
asmlib.SetAsmConvar(oPly,"nextx", nextx)
asmlib.SetAsmConvar(oPly,"nexty", nextx)
asmlib.SetAsmConvar(oPly,"nextz", nextz - elevpnt)
if(not (tN[mD-1] and tN[mD+1])) then vF = tR[2]:Forward() else
vF = Vector(tN[mD+1]); vF:Sub(tN[mD-1]); vF:Normalize() end
local aO = vF:AngleEx(vN)
local nextpic, nextyaw, nextrol = aO:Unpack()
asmlib.SetAsmConvar(oPly,"nextpic", nextpic)
asmlib.SetAsmConvar(oPly,"nextyaw", nextyaw)
asmlib.SetAsmConvar(oPly,"nextrol", nextrol)
return tC
end
end
tC.Node[mD]:Set(tData.Org)
tC.Norm[mD]:Set(tData.Ang:Up())
tC.Base[mD]:Set(tData.Hit)
@ -953,7 +1044,7 @@ function TOOL:CurveUpdate(stTrace, bPnt, bMute)
tC.Rays[mD][2]:Set(tData.Ang)
tC.Rays[mD][3] = (tData.POA ~= nil)
-- Adjust node according to intersection
if(bPnt and not tData.POA) then
if(bPnt and not tData.POA and not bTr) then
local xx = self:GetCurveNodeActive(mD, tData.Org)
if(xx) then
tC.Node[mD]:Set(xx)
@ -962,12 +1053,16 @@ function TOOL:CurveUpdate(stTrace, bPnt, bMute)
tC.Norm[mD]:Normalize()
end
end
if(not bTr) then -- Try to apply the new super-elevation
local iN, vN = self:ApplySuperElevation(tC, tData, mD)
if(iN > 0) then tC.Norm[iN]:Set(vN) end
end
if(not bMute) then
asmlib.Notify(user, "Node ["..mD.."] updated !", "CLEANUP")
netStart(gsLibName.."SendUpdateCurveNode")
netWriteEntity(user)
netWriteVector(tC.Node[mD])
netWriteVector(tC.Norm[mD])
netWriteNormal(tC.Norm[mD])
netWriteVector(tC.Base[mD])
netWriteVector(tC.Rays[mD][1])
netWriteAngle (tC.Rays[mD][2])
@ -1182,19 +1277,18 @@ function TOOL:LeftClick(stTrace)
}, function(oPly, oArg)
for iD = oArg.stard, tC.SSize do tS = tC.Snap[iD]
for iK = oArg.stark, tS.Size do local tV, ePiece = tS[iK], nil
oArg.spawn = asmlib.GetNormalSpawn(oPly, tV[1], tV[2], model, pointid,
nextx, nexty, nextz, nextpic, nextyaw, nextrol, oArg.spawn)
oArg.spawn = asmlib.GetNormalSpawn(oPly, tV[1], tV[2], model, pointid, 0, 0, 0, 0, 0, 0, oArg.spawn)
if(not oArg.spawn) then -- Make sure it persists to set it afterwards
asmlib.LogInstance(self:GetStatus(stTrace,"("..oArg.wname..") "..sItr..": Cannot obtain spawn data"),gtLogs); return false end
if(crvturnlm > 0 or crvleanlm > 0) then local nF, nU = asmlib.GetTurningFactor(oPly, tS, iK)
if(nF and nF < crvturnlm) then
oArg.mundo = asmlib.GetReport(iD, asmlib.GetNearest(tV[1], tC.Node), ("%4.3f"):format(nF))
asmlib.Notify(oPly, oArg.wname.." excessive turn at "..oArg.mundo.." !", "ERROR")
asmlib.Notify(oPly, oArg.wname..": excessive turn at "..oArg.mundo.." !", "ERROR")
asmlib.LogInstance(self:GetStatus(stTrace,"("..oArg.wname..") "..oArg.mundo..": Turn excessive"), gtLogs); return false
end
if(nU and nU < crvleanlm) then
oArg.mundo = asmlib.GetReport(iD, asmlib.GetNearest(tV[1], tC.Node),("%4.3f"):format(nU))
asmlib.Notify(oPly, oArg.wname.." excessive lean at "..oArg.mundo.." !", "ERROR")
asmlib.Notify(oPly, oArg.wname..": excessive lean at "..oArg.mundo.." !", "ERROR")
asmlib.LogInstance(self:GetStatus(stTrace,"("..oArg.wname..") "..oArg.mundo..": Lean excessive"), gtLogs); return false
end
end
@ -1364,7 +1458,7 @@ function TOOL:LeftClick(stTrace)
end
else -- Visual
local IDs = gsSymDir:Explode(bgskids)
if(not asmlib.AttachBodyGroups(trEnt,IDs[1] or "")) then
if(not asmlib.ApplyBodyGroups(trEnt,IDs[1] or "")) then
asmlib.LogInstance(self:GetStatus(stTrace,"(Bodygroup/Skin) Failed",trEnt),gtLogs); return false end
trEnt:SetSkin(mathClamp(tonumber(IDs[2]) or 0,0,trEnt:SkinCount()-1))
asmlib.LogInstance("(Bodygroup/Skin) Success",gtLogs)
@ -1521,18 +1615,6 @@ function TOOL:Reload(stTrace)
if(user:IsAdmin()) then
if(self:GetDeveloperMode()) then
asmlib.SetLogControl(self:GetLogLines(),self:GetLogFile()) end
if(self:GetExportDB()) then
if(user:KeyDown(IN_USE)) then
asmlib.SetAsmConvar(user,"openextdb")
asmlib.LogInstance("(World) Success open expdb",gtLogs)
else
asmlib.ExportDSV("PIECES")
asmlib.ExportDSV("ADDITIONS")
asmlib.ExportDSV("PHYSPROPERTIES")
asmlib.LogInstance("(World) Exporting DB",gtLogs)
end
asmlib.SetAsmConvar(user, "exportdb", 0)
end
end
if(user:KeyDown(IN_SPEED)) then
if(workmode == 1) then
@ -1636,8 +1718,6 @@ function TOOL:UpdateGhostCurve()
local stackcnt = self:GetStackCount()
local pointid, pnextid = self:GetPointID()
local tGho, iGho = asmlib.GetOpVar("ARRAY_GHOST"), 0
local nextx, nexty, nextz = self:GetPosOffsets()
local nextpic, nextyaw, nextrol = self:GetAngOffsets()
local bCrv = user:GetNWBool(gsToolPrefL.."engcurve", false)
if(bCrv) then
local workmode = self:GetWorkingMode()
@ -1657,8 +1737,7 @@ function TOOL:UpdateGhostCurve()
for iD = 1, tCrv.SSize do local tS = tCrv.Snap[iD]
for iK = 1, tS.Size do iGho = (iGho + 1)
local tV, eGho = tS[iK], tGho[iGho]
local stSpawn = asmlib.GetNormalSpawn(user, tV[1], tV[2], model, pointid,
nextx, nexty, nextz, nextpic, nextyaw, nextrol)
local stSpawn = asmlib.GetNormalSpawn(user, tV[1], tV[2], model, pointid, 0, 0, 0, 0, 0, 0)
if(eGho and eGho:IsValid()) then eGho:SetNoDraw(true)
if(stackcnt > 0) then if(iGho > stackcnt) then eGho:SetNoDraw(true) else
if(stSpawn) then eGho:SetPos(stSpawn.SPos); eGho:SetAngles(stSpawn.SAng); eGho:SetNoDraw(false) end end
@ -1930,7 +2009,7 @@ function TOOL:DrawCurveNode(oScreen, oPly, stTrace)
if(not tData) then asmlib.LogInstance("Transform missing", gtLogs); return end
local tC, nS = asmlib.GetCacheCurve(oPly), self:GetSizeUCS()
if(not tC) then asmlib.LogInstance("Curve missing", gtLogs); return end
local nrB, nrS, mD, mL = 3, 1.5
local nrB, nrS, nrA, mD, mL = 1.5, 1.5, self:GetActiveRadius()
local xyO, xyH = tData.Org:ToScreen(), tData.Hit:ToScreen()
local xyZ = (tData.Org + nS * tData.Ang:Up()):ToScreen()
local xyX = (tData.Org + nS * tData.Ang:Forward()):ToScreen()
@ -1943,14 +2022,17 @@ function TOOL:DrawCurveNode(oScreen, oPly, stTrace)
if(tC.Size and tC.Size > 0) then
for iD = 1, tC.Size do
local rN = (iD == 1 and nrB or nrS)
local vB, vD, vN = tC.Base[iD], tC.Node[iD], tC.Norm[iD]
local vB, tR = tC.Base[iD], tC.Rays[iD]
local vD, vN = tC.Node[iD], tC.Norm[iD]
local nB = asmlib.GetViewRadius(oPly, vB, 2)
local nD = asmlib.GetViewRadius(oPly, vD, rN)
local xyB, xyD = vB:ToScreen(), vD:ToScreen()
local xyN = (vD + nS * vN):ToScreen()
local xyF = (vD + nS * tR[2]:Forward()):ToScreen()
oScreen:DrawLine(xyB, xyD, "y")
oScreen:DrawCircle(xyB, nB)
oScreen:DrawCircle(xyD, nD)
oScreen:DrawLine(xyF, xyD, "r")
oScreen:DrawLine(xyN, xyD, "b")
oScreen:DrawCircle(xyD, nD / 2, "r")
if(tC.Node[iD - 1]) then
@ -1969,7 +2051,18 @@ function TOOL:DrawCurveNode(oScreen, oPly, stTrace)
if(bRp and mD) then
local xyN = tC.Node[mD]:ToScreen()
oScreen:DrawLine(xyO, xyN, "r")
if(bPnt and not tData.POA) then
if(mL < nrA^2) then
local nP, vR = 10, oPly:GetRight()
if(bPnt) then
local vU = oPly:GetUp(); vU:Mul(-nP); vU:Add(tData.Org)
oScreen:DrawLine(xyO, (vU + nP * vR):ToScreen(), "m")
oScreen:DrawLine(xyO, (vU - nP * vR):ToScreen(), "m")
else
local vU = oPly:GetUp(); vU:Mul(nP); vU:Add(tData.Org)
oScreen:DrawLine(xyO, (vU + nP * vR):ToScreen(), "m")
oScreen:DrawLine(xyO, (vU - nP * vR):ToScreen(), "m")
end
elseif(bPnt and not tData.POA) then
local xx, sx = self:GetCurveNodeActive(mD, tData.Org, true)
if(xx) then
local xyX = xx:ToScreen(); oScreen:DrawLine(xyX, xyO, "ry")
@ -2240,7 +2333,7 @@ function TOOL:DrawToolScreen(w, h)
local actrad = self:GetActiveRadius()
local pointid, pnextid = self:GetPointID()
local workmode, workname = self:GetWorkingMode()
local trMaxCN, trModel, trOID, trRLen
local trMID, trModel, trOID, trRLen
if(trEnt and trEnt:IsValid()) then
if(asmlib.IsOther(trEnt)) then return end
trModel = trEnt:GetModel()
@ -2256,7 +2349,7 @@ function TOOL:DrawToolScreen(w, h)
trRLen = mathRound(stSpawn.RLen,2)
end
if(asmlib.IsHere(trRec)) then
trMaxCN = trRec.Size
trMID = trRec.Size
trModel = stringGetFileName(trModel)
else trModel = "["..gsNoMD.."]"..stringGetFileName(trModel) end
end
@ -2265,7 +2358,7 @@ function TOOL:DrawToolScreen(w, h)
maxrad = asmlib.GetAsmConvar("maxactrad", "FLT")
scrTool:DrawText("TM: " ..(trModel or gsNoAV),"y")
scrTool:DrawText("HM: " ..(model or gsNoAV),"m")
scrTool:DrawText("ID: ["..(trMaxCN or gsNoID)
scrTool:DrawText("ID: ["..(trMID or gsNoID)
.."] " ..(trOID or gsNoID)
.." >> "..(pointid or gsNoID)
.. " (" ..(pnextid or gsNoID)
@ -2290,7 +2383,6 @@ function TOOL.BuildCPanel(CPanel)
asmlib.SetAsmConvar(nil, "flipoverid") -- Reset flip-over mode on pickup
CPanel:ClearControls(); CPanel:DockPadding(5, 0, 5, 10)
local drmSkin, sLog = CPanel:GetSkin(), "*TOOL.BuildCPanel"
local devmode = asmlib.GetAsmConvar("devmode", "BUL")
local nMaxLin = asmlib.GetAsmConvar("maxlinear","FLT")
local iMaxDec = asmlib.GetAsmConvar("maxmenupr","INT")
local sCall, pItem, sName, aData = "_cpan" -- pItem is the current panel created
@ -2304,13 +2396,11 @@ function TOOL.BuildCPanel(CPanel)
pComboPresets:AddConVar(val) end
CPanel:AddItem(pComboPresets)
local cqPanel = asmlib.CacheQueryPanel(devmode); if(not cqPanel) then
local qPanel = asmlib.CacheQueryTree(); if(not qPanel) then
asmlib.LogInstance("Panel population empty",sLog); return end
local makTab = asmlib.GetBuilderNick("PIECES"); if(not asmlib.IsHere(makTab)) then
asmlib.LogInstance("Missing builder table",sLog); return end
local defTable = makTab:GetDefinition()
local catTypes = asmlib.GetOpVar("TABLE_CATEGORIES")
local pTree = vguiCreate("DTree", CPanel); if(not pTree) then
local pTree = vguiCreate("DTree", CPanel); if(not pTree) then
asmlib.LogInstance("Database tree empty",sLog); return end
pTree:Dock(TOP) -- Initialize to fill left and right bounds
pTree:SetTall(400) -- Make it quite large
@ -2318,73 +2408,56 @@ function TOOL.BuildCPanel(CPanel)
pTree:SetIndentSize(0) -- All track types are closed
pTree:UpdateColours(drmSkin) -- Apply current skin
CPanel:AddItem(pTree) -- Register it to the panel
local iCnt, iTyp, pTypes, pCateg, pNode = 1, 1, {}, {}
while(cqPanel[iCnt]) do
local vRec, bNow = cqPanel[iCnt], true
local sMod = vRec[makTab:GetColumnName(1)]
local sTyp = vRec[makTab:GetColumnName(2)]
local sNam = vRec[makTab:GetColumnName(3)]
local defTable = makTab:GetDefinition()
local tType, tRoot = {}, {Size = 0}
for iC = 1, qPanel.Size do
local vRec, bNow = qPanel[iC], true
local sMod, sTyp, sNam = vRec.M, vRec.T, vRec.N
if(asmlib.IsModel(sMod)) then
if(not (asmlib.IsBlank(sTyp) or pTypes[sTyp])) then
if(not (asmlib.IsBlank(sTyp) or tType[sTyp])) then
local pRoot = pTree:AddNode(sTyp) -- No type folder made already
pRoot:SetTooltip(languageGetPhrase("tool."..gsToolNameL..".type"))
pRoot.Icon:SetImage(asmlib.ToIcon(defTable.Name))
pRoot.DoClick = function() asmlib.SetExpandNode(pRoot) end
pRoot.Expander.DoClick = function() asmlib.SetExpandNode(pRoot) end
pRoot.DoRightClick = function()
local sID = asmlib.WorkshopID(sTyp)
if(sID and sID:len() > 0 and inputIsKeyDown(KEY_LSHIFT)) then
guiOpenURL(asmlib.GetOpVar("FORM_URLADDON"):format(sID))
else SetClipboardText(pRoot:GetText()) end
end
pRoot.DoClick = function() asmlib.SetNodeExpand(pRoot) end
pRoot.Expander.DoClick = function() asmlib.SetNodeExpand(pRoot) end
pRoot.DoRightClick = function() asmlib.OpenNodeMenu(pRoot) end
pRoot:UpdateColours(drmSkin)
pTypes[sTyp] = pRoot
tType[sTyp] = {Base = pRoot, Node = {}}
end -- Reset the primary tree node pointer
if(pTypes[sTyp]) then pItem = pTypes[sTyp] else pItem = pTree end
-- Register the category if definition functional is given
if(catTypes[sTyp]) then -- There is a category definition
local bSuc, ptCat, psNam = pcall(catTypes[sTyp].Cmp, sMod)
if(bSuc) then -- When the call is successful in protected mode
if(psNam and not asmlib.IsBlank(psNam)) then
sNam = asmlib.GetBeautifyName(psNam)
end -- Custom name override when the addon requests
local pCurr = pCateg[sTyp]
if(not asmlib.IsHere(pCurr)) then
pCateg[sTyp] = {}; pCurr = pCateg[sTyp] end
if(asmlib.IsBlank(ptCat)) then ptCat = nil end
if(asmlib.IsHere(ptCat)) then
if(not istable(ptCat)) then ptCat = {ptCat} end
if(ptCat[1]) then local iD = 1
while(ptCat[iD]) do local sCat = tostring(ptCat[iD]):lower():Trim()
if(asmlib.IsBlank(sCat)) then sCat = "other" end
sCat = asmlib.GetBeautifyName(sCat) -- Beautify the category
if(pCurr[sCat]) then -- Jump next if already created
pCurr, pItem = asmlib.GetDirectory(pCurr, sCat)
else
pCurr, pItem = asmlib.SetDirectory(pItem, pCurr, sCat)
end; iD = iD + 1 -- Create the last needed node regarding pItem
end
end -- When the category has at least one element
else -- Store the creation information of the ones without category for later
tableInsert(pCateg[sTyp], {sNam, sMod}); bNow = false
end -- Is there is any category apply it. When available process it now
end
end -- Register the node associated with the track piece when is intended for later
if(bNow) then asmlib.SetDirectoryNode(pItem, sNam, sMod) end
if(tType[sTyp]) then pItem = tType[sTyp].Base else pItem = pTree end
-- Register the node associated with the track piece when is intended for later
if(vRec.C and vRec.C.Size > 0) then -- When category for the track type is available
local tNode = tType[sTyp].Node -- Index the contend for the track type
for iD = 1, vRec.C.Size do -- Generate the path to the track piece
local sCat = vRec.C[iD] -- Read the category name
local tCat = tNode[sCat] -- Index the internal sub-category
if(tCat) then -- Jump next if already created
pItem = tCat.Base -- Assume that the category is allocated
tNode = tCat.Node -- Jump to the next set of base nodes
else -- Create a new sub-category for the incoming content
tNode[sCat] = {}; tCat = tNode[sCat] -- Create node info
pItem = asmlib.SetNodeDirectory(pItem, sCat) -- Create category
tCat.Base = pItem; tCat.Node = {} -- Allocate node info
tNode = tCat.Node -- Jump to the allocated set of base nodes
end -- Create the last needed node regarding pItem
end -- When the category has at least one element
else -- Panel cannot categorize the entry add it to the list
tRoot.Size = tRoot.Size + 1 -- Increment count to avoid calling #
tableInsert(tRoot, iC); bNow = false -- Attach row ID to rooted items
end -- When needs to be processed now just attach it to the tree
if(bNow) then asmlib.SetNodeContent(pItem, sNam, sMod) end
-- SnapReview is ignored because a query must be executed for points count
else asmlib.LogInstance("Ignoring item "..asmlib.GetReport(sTyp, sNam, sMod),sLog) end
iCnt = iCnt + 1
end
-- Attach the hanging items to the type root
for typ, val in pairs(pCateg) do
for iD = 1, #val do
local pan = pTypes[typ]
local nam, mod = unpack(val[iD])
asmlib.SetDirectoryNode(pan, nam, mod)
asmlib.LogInstance("Rooting item "..asmlib.GetReport(typ, nam, mod),sLog)
end
for iR = 1, tRoot.Size do
local iRox = tRoot[iR]
local vRec = qPanel[iRox]
local sMod, sTyp, sNam = vRec.M, vRec.T, vRec.N
asmlib.SetNodeContent(tType[sTyp].Base, sNam, sMod)
asmlib.LogInstance("Rooting item "..asmlib.GetReport(sTyp, sNam, sMod), sLog)
end -- Process all the items without category defined
asmlib.LogInstance("Found items #"..tostring(iCnt - 1), sLog)
asmlib.LogInstance("Found items #"..qPanel.Size, sLog)
-- http://wiki.garrysmod.com/page/Category:DComboBox
local sName = asmlib.GetAsmConvar("workmode", "NAM")
@ -2421,21 +2494,21 @@ function TOOL.BuildCPanel(CPanel)
pComboPhysName:SetTall(22)
pComboPhysName:UpdateColours(drmSkin)
local cqProperty = asmlib.CacheQueryProperty(); if(not cqProperty) then
local qProperty = asmlib.CacheQueryProperty(); if(not qProperty) then
asmlib.LogInstance("Property population empty",sLog); return end
while(cqProperty[iTyp]) do
local sT, sI = cqProperty[iTyp], asmlib.ToIcon("property_type")
pComboPhysType:AddChoice(sT, sT, false, sI); iTyp = iTyp + 1
for iP = 1, qProperty.Size do
local sT, sI = qProperty[iP], asmlib.ToIcon("property_type")
pComboPhysType:AddChoice(sT, sT, false, sI)
end
pComboPhysType.OnSelect = function(pnSelf, nInd, sVal, anyData)
local cqNames = asmlib.CacheQueryProperty(sVal)
if(cqNames) then local iNam = 1; pComboPhysName:Clear()
local qNames = asmlib.CacheQueryProperty(sVal)
if(qNames) then pComboPhysName:Clear()
pComboPhysName:SetValue(languageGetPhrase("tool."..gsToolNameL..".phyname_def"))
while(cqNames[iNam]) do
local sN, sI = cqNames[iNam], asmlib.ToIcon("property_name")
pComboPhysName:AddChoice(sN, sN, false, sI); iNam = iNam + 1
for iNam = 1, qNames.Size do
local sN, sI = qNames[iNam], asmlib.ToIcon("property_name")
pComboPhysName:AddChoice(sN, sN, false, sI)
end
else asmlib.LogInstance("Property type <"..sVal.."> names mismatch",sLog) end
end
@ -2443,7 +2516,7 @@ function TOOL.BuildCPanel(CPanel)
cvarsRemoveChangeCallback(sName, sName..sCall)
cvarsAddChangeCallback(sName, function(sV, vO, vN)
pComboPhysName:SetValue(vN) end, sName..sCall);
asmlib.LogTable(cqProperty, "Property", sLog)
asmlib.LogTable(qProperty, "Property", sLog)
-- http://wiki.garrysmod.com/page/Category:DTextEntry
local sName = asmlib.GetAsmConvar("bgskids", "NAM")
@ -2511,6 +2584,7 @@ if(CLIENT) then
asmlib.SetNumSlider(CPanel, "ghostblnd", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvturnlm", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvleanlm", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvsuprev", iMaxDec)
asmlib.SetNumSlider(CPanel, "sgradmenu", 0)
asmlib.SetNumSlider(CPanel, "rtradmenu", iMaxDec)
asmlib.SetCheckBox(CPanel, "enradmenu")
@ -2518,7 +2592,8 @@ if(CLIENT) then
asmlib.LogInstance("Registered as "..asmlib.GetReport(CPanel.Name), sLog)
end
asmlib.DoAction("TWEAK_PANEL", "Utilities", "User", setupUserSettings)
local bS, vOut = asmlib.DoAction("TWEAK_PANEL", "Utilities", "User", setupUserSettings)
if(not bS) then asmlib.LogInstance("User create: "..vOut, sLog) end
-- Enter `spawnmenu_reload` in the console to reload the panel
local function setupAdminSettings(CPanel)
@ -2668,6 +2743,7 @@ if(CLIENT) then
asmlib.SetAsmConvar(user, "endsvlock", asmlib.GetAsmConvar("endsvlock", "DEF"))
asmlib.SetAsmConvar(user, "curvefact", asmlib.GetAsmConvar("curvefact", "DEF"))
asmlib.SetAsmConvar(user, "curvsmple", asmlib.GetAsmConvar("curvsmple", "DEF"))
asmlib.SetAsmConvar(user, "crvsuprev", asmlib.GetAsmConvar("crvsuprev", "DEF"))
asmlib.SetAsmConvar(user, "spawnrate", asmlib.GetAsmConvar("spawnrate", "DEF"))
asmlib.SetAsmConvar(user, "bnderrmod", asmlib.GetAsmConvar("bnderrmod", "DEF"))
asmlib.SetAsmConvar(user, "maxfruse" , asmlib.GetAsmConvar("maxfruse" , "DEF"))
@ -2685,5 +2761,6 @@ if(CLIENT) then
asmlib.LogInstance("Registered as "..asmlib.GetReport(CPanel.Name), sLog)
end
asmlib.DoAction("TWEAK_PANEL", "Utilities", "Admin", setupAdminSettings)
local bS, vOut = asmlib.DoAction("TWEAK_PANEL", "Utilities", "Admin", setupAdminSettings)
if(not bS) then asmlib.LogInstance("Admin create: "..vOut, sLog) end
end

View File

@ -396,6 +396,7 @@ anymore to maintain cetain track packs leading in **NO SUPPORT**, which is also
* [RockMan's Fortification](https://steamcommunity.com/sharedfiles/filedetails/?id=3071058065)
* [SligWolf's Suspension train](https://steamcommunity.com/sharedfiles/filedetails/?id=3297918081) [**(AUTHOR)**][ref-maintained]
* [Modular City Street](https://steamcommunity.com/sharedfiles/filedetails/?id=3314861708)
* [Scene Builder](https://steamcommunity.com/sharedfiles/filedetails/?id=2233731395)
#### 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

View File

@ -1,9 +1,88 @@

tool.trackassembly.workmode.1=Обикновено създаване/залепяне
tool.trackassembly.workmode.2=Пресичане на активни точки
tool.trackassembly.workmode.3=Линейна сегментна интерполация
tool.trackassembly.workmode.4=Преобръщане спрямо нормалата
tool.trackassembly.workmode.5=Преход на завой по допирателна
Cleaned_asmtracks=Всички парчета трасе са почистени
Cleanup_asmtracks=Сглобени парчета трасе
SBoxLimit_asmtracks=Достигнахте границата на създадените парчета трасе!
sbox_maxasmtracks=Променете тук за да настроите нещата които са създадени от инструмента на сървъра
sbox_maxasmtracks_con=Общо сегменти\:
tool.trackassembly.activrad=Минимално разстояние за да се избере активна точка
tool.trackassembly.activrad_con=Активен радиус\:
tool.trackassembly.adviser=Управлява изобразяването на позиционен/ъглов съветник
tool.trackassembly.adviser_con=Изобразявай съветника
tool.trackassembly.angsnap=Залепете първото създадено парче на толкова градуса
tool.trackassembly.angsnap_con=Ъглово подравняване\:
tool.trackassembly.appangfst=Приложи ъгловото отместване само върху първото парче за насочване
tool.trackassembly.appangfst_con=Приложи ъгловото на първи
tool.trackassembly.applinfst=Приложи линейното отместване само върху първото парче за позициониране
tool.trackassembly.applinfst_con=Приложи линейното на първи
tool.trackassembly.bgskids=Селекционен код за избор на Телесна-група/Кожа ID
tool.trackassembly.bgskids_con=Телесна-група/Кожа\:
tool.trackassembly.bgskids_def=Запишете селекционен код тук. Например 1,0,0,2,1/3
tool.trackassembly.bnderrmod=Променете тук за да дефинирате поведение когато клиентите създават парчета извън картата
tool.trackassembly.bnderrmod_con=Режим на ограничение\:
tool.trackassembly.bnderrmod_error=Забранено натрупване/създаване грешка е показана
tool.trackassembly.bnderrmod_generic=Забранено натрупване/създаване съобщение е изписано
tool.trackassembly.bnderrmod_hint=Забранено натрупване/създаване подсказка е изобразена
tool.trackassembly.bnderrmod_log=Забранено натрупване/създаване грешката е записана
tool.trackassembly.bnderrmod_off=Разрешено натрупване/създаване без граници
tool.trackassembly.buttonas+/-=Обърни знака
tool.trackassembly.buttonas<>=Намали/Увеличи
tool.trackassembly.buttonas@=Приложи стойност\:
tool.trackassembly.buttonas@D=Дефолтна стойност
tool.trackassembly.buttonas@M=Запомни стойност
tool.trackassembly.client_var=Клиентски предпочитания на играча. Променливи създадени чрез инструмента конфигурация
tool.trackassembly.crvleanlm=Променете тук за да настроите остротата на наклона при сегментиране на кривата
tool.trackassembly.crvleanlm_con=Наклон на кривината\:
tool.trackassembly.crvsuprev=Променете тук за да настроите тежестта на коефицианта за свъхденивалация
tool.trackassembly.crvsuprev_con=Свръх денивелация\:
tool.trackassembly.crvturnlm=Променете тук за да настроите остротата на завоя при сегментиране на кривата
tool.trackassembly.crvturnlm_con=Завой на кривината\:
tool.trackassembly.curvefact=Променете тук за да настроите тангенциалния коефициент на кривата
tool.trackassembly.curvefact_con=Фактор на кривата\:
tool.trackassembly.curvsmple=Променете тук за да настроите интерполационните проби на кривата
tool.trackassembly.curvsmple_con=Проби на кривата\:
tool.trackassembly.desc=Сглобява трасе по което да вървят превозните средства
tool.trackassembly.devmode=Когато се разреши пуска режим на разработчик за анализ и дебъг на грешки
tool.trackassembly.devmode_con=Включи режим на разработчик
tool.trackassembly.dtmessage=Управлява времевия интервал между сървърните съобщения на контекстното меню
tool.trackassembly.dtmessage_con=Времеви интервал\:
tool.trackassembly.enctxmall=Когато е разрешено включва специалното контекстно меню за всички предмети
tool.trackassembly.enctxmall_con=Разреши контекстно меню за всички
tool.trackassembly.enctxmenu=Когато е разрешено включва специалното контекстно меню за парчета трасе
tool.trackassembly.enctxmenu_con=Включи контекстно меню
tool.trackassembly.endsvlock=Когато е разрешено заключва файловете на външната DSV база данни
tool.trackassembly.endsvlock_con=Разреши DSV заключването
tool.trackassembly.engunsnap=Управлява залепването когато парчето е изпуснато с физическото оръдие на играча
tool.trackassembly.engunsnap_con=Залепване при изпускане
tool.trackassembly.enmultask=Когато е разрешено включва многозадачната система по време на натрупване
tool.trackassembly.enmultask_con=Включи многозадачна система
tool.trackassembly.enpntmscr=Когато се разреши позволява превключване на активните точки чрез скрола на мишката
tool.trackassembly.enpntmscr_con=Разреши скрола за точките
tool.trackassembly.enradmenu=Когато се пусне позволява управление на режимите на работа чрез кръгово меню
tool.trackassembly.enradmenu_con=Разреши кръгово меню
tool.trackassembly.enwiremod=Когато е разрешено включва разширението за wiremod expression чипа
tool.trackassembly.enwiremod_con=Включи wiremod expression
tool.trackassembly.exportdb=Когато се пусне разрешава експортирането на базата данни в един голям файл
tool.trackassembly.exportdb_con=Разреши експорт на базата данни
tool.trackassembly.factory_reset=Кликнете за да приложите фабрични настройки на конзолните променливи
tool.trackassembly.factory_reset_con=Приложи фабрични настройки
tool.trackassembly.forcelim=Управлява колко сила е необходима за да се счупи заварката
tool.trackassembly.forcelim_con=Якост на заварката\:
tool.trackassembly.freeze=Създава парчето в замразено състояние
tool.trackassembly.freeze_con=Замрази парчето
tool.trackassembly.ghostblnd=Управлява прозрачността на парчето сянка. Малка стойност за по-прозрачно
tool.trackassembly.ghostblnd_con=Преливане на парчета сенки\:
tool.trackassembly.ghostcnt=Управлява изобразяването на броя парчета сенки
tool.trackassembly.ghostcnt_con=Изобразявай парчета сенки
tool.trackassembly.gravity=Управлява гравитацията върху създаденото парче
tool.trackassembly.gravity_con=Приложи гравитация върху парчето
tool.trackassembly.ignphysgn=Пренебрегва хващането с физическо оръдие на парчето създадено/залепено/натрупано
tool.trackassembly.ignphysgn_con=Пренебрегни хващането с физическо оръдие
tool.trackassembly.igntype=Пренебрегва различните типове парчета при лепене/натрупване
tool.trackassembly.igntype_con=Пренебрегни типа на парчето
tool.trackassembly.incsnpang=Дефинира стъпката на ъглово отместване за слайд бутоните
tool.trackassembly.incsnpang_con=Ъглова стъпка\:
tool.trackassembly.incsnplin=Дефинира стъпката на линейно отместване за слайд бутоните
tool.trackassembly.incsnplin_con=Линейна стъпка\:
tool.trackassembly.info.1=Създава парчета върху картата или ги сглобява едно спрямо друго
tool.trackassembly.info.2=Свързва секциите на трасето със специален сегмент проектиран за това
tool.trackassembly.info.3=Създава непрекъснати трасета преминаващи през дадени контролни точки
@ -14,16 +93,125 @@ tool.trackassembly.left.2=Създаване на парче в пресечен
tool.trackassembly.left.3=Създаване на интерполирана крива на трасе от предмети
tool.trackassembly.left.4=Създаване на огледалните парчета на избрания списък
tool.trackassembly.left.5=Създаване на интерполирана крива на трасе от предмети
tool.trackassembly.right.1=Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right.2=Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right.3=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите
tool.trackassembly.right.4=Регистриране на предмет в списъка за обръщане. Задръжте SHIFT за смяна на модела
tool.trackassembly.right.5=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите
tool.trackassembly.right_use.1=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right_use.2=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right_use.3=Генериране на възел от най-близката активна точка на парчето
tool.trackassembly.right_use.4=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right_use.5=Генериране на възел от най-близката активна точка на парчето
tool.trackassembly.logfile=Когато е включено започва да пише лог поток в специален файл
tool.trackassembly.logfile_con=Включи лог файла
tool.trackassembly.logsmax=Променете тук за да настроите максималните линии за дължина на лога
tool.trackassembly.logsmax_con=Дължина на лога\:
tool.trackassembly.mass=Колко тежко ще бъде създаденото парче
tool.trackassembly.mass_con=Маса на парчето\:
tool.trackassembly.maxactrad=Променете тук за да настроите максималния радиус за взимане на индекс за снаждане
tool.trackassembly.maxactrad_con=Граница на радиус\:
tool.trackassembly.maxforce=Променете тук за да настроите максималната сила при на заварките
tool.trackassembly.maxforce_con=Граница на сила\:
tool.trackassembly.maxfruse=Променете тук за да настроите дълбочината на често срещаните парчета в списъка
tool.trackassembly.maxfruse_con=Чести парчета\:
tool.trackassembly.maxghcnt=Променете тук за да настроите максималния брой парчета сенки при натрупване
tool.trackassembly.maxghcnt_con=Граница на парчета сенки\:
tool.trackassembly.maxlinear=Променете тук за да настроите максималното отместване на парчето
tool.trackassembly.maxlinear_con=Граница на отместване\:
tool.trackassembly.maxmass=Променете тук за да настроите максималната маза на парчетата при създаване
tool.trackassembly.maxmass_con=Граница на маса\:
tool.trackassembly.maxmenupr=Променете тук за да използвате различен брой знаци след десетичната точка
tool.trackassembly.maxmenupr_con=Десетични знаци\:
tool.trackassembly.maxspmarg=Променете тук за да настроите маржа на разстоянието от предишното създаване
tool.trackassembly.maxspmarg_con=Марж на създаване\:
tool.trackassembly.maxstatts=Дефинира след колко опита за натрупване на парче ще се изведе грешка
tool.trackassembly.maxstatts_con=Опити за натрупване\:
tool.trackassembly.maxstcnt=Променете тук за да настроите максималния брой парчета в режим на натрупване
tool.trackassembly.maxstcnt_con=Граница на натрупване\:
tool.trackassembly.maxtrmarg=Променете тук за да използвате различен интервал между проследяванията
tool.trackassembly.maxtrmarg_con=Марж на проследяване\:
tool.trackassembly.modedb=Променете тук за да дефинирате поведението при съхранение на базата данни
tool.trackassembly.modedb_con=Режим на базата\:
tool.trackassembly.modedb_lua=Използвайте директно съхранение в кеша
tool.trackassembly.modedb_sql=Кеширане само на заявените записи
tool.trackassembly.model=Изберете парче за да започнете/продължите трасето си избирайки типа в дървото и кликвайки на листо
tool.trackassembly.model_con=Модел на парчето\:
tool.trackassembly.name=Монтаж на трасе
tool.trackassembly.nextpic=Допълнително отместване на началото по тангаж
tool.trackassembly.nextpic_con=Тангаж на началото\:
tool.trackassembly.nextrol=Допълнително отместване на началото по крен
tool.trackassembly.nextrol_con=Крен на началото\:
tool.trackassembly.nextx=Допълнително отместване на началото по абсциса
tool.trackassembly.nextx_con=Отместване по абсциса\:
tool.trackassembly.nexty=Допълнително отместване на началото по ордината
tool.trackassembly.nexty_con=Отместване по ордината\:
tool.trackassembly.nextyaw=Допълнително отместване на началото по азимут
tool.trackassembly.nextyaw_con=Азимут на началото\:
tool.trackassembly.nextz=Допълнително отместване на началото по апликата
tool.trackassembly.nextz_con=Отместване по апликата\:
tool.trackassembly.nocollide=Създава не-сблъсък между парчетата или парчета/опора
tool.trackassembly.nocollide_con=Създай не-сблъсък
tool.trackassembly.nocollidew=Създава не-сблъсък между парчетата и света
tool.trackassembly.nocollidew_con=Създай не-сблъсък свят
tool.trackassembly.nonrep_var=Контроли за не-репликирани променливи. Приемат различни стойности на сървъра и клиента
tool.trackassembly.phyname=Изберете името на физическите свойства което да се използва при създаване на трасе като това ще повлияе на повърхностното триене
tool.trackassembly.phyname_con=Име на повърхността\:
tool.trackassembly.phyname_def=<Избери име на повърхността>
tool.trackassembly.phytype=Изберете типа на физическите свойства от дадените тук
tool.trackassembly.phytype_con=Тип на повърхността\:
tool.trackassembly.phytype_def=<Избери тип на повърхността>
tool.trackassembly.pn_contextm_cp=Копирай
tool.trackassembly.pn_contextm_cpbx=Клетка
tool.trackassembly.pn_contextm_cpmd=Модел
tool.trackassembly.pn_contextm_cpnm=Име
tool.trackassembly.pn_contextm_cprw=Ред
tool.trackassembly.pn_contextm_cpth=Път
tool.trackassembly.pn_contextm_cpty=Тип
tool.trackassembly.pn_contextm_ep=Разгъни
tool.trackassembly.pn_contextm_ex=Съхрани
tool.trackassembly.pn_contextm_exdv=Външно
tool.trackassembly.pn_contextm_exru=Скрипт
tool.trackassembly.pn_contextm_li=Линия
tool.trackassembly.pn_contextm_licg=Промени
tool.trackassembly.pn_contextm_licr=Създай
tool.trackassembly.pn_contextm_lirm=Премахни
tool.trackassembly.pn_contextm_mv=Премести
tool.trackassembly.pn_contextm_mvbt=Отдолу
tool.trackassembly.pn_contextm_mvdn=Долу
tool.trackassembly.pn_contextm_mvtp=Отгоре
tool.trackassembly.pn_contextm_mvup=Горе
tool.trackassembly.pn_contextm_st=Таблици
tool.trackassembly.pn_contextm_stdl=Изтрий
tool.trackassembly.pn_contextm_sted=Редактирай (Luapad)
tool.trackassembly.pn_contextm_stnk=Копирай ника
tool.trackassembly.pn_contextm_stpt=Копирай пътя
tool.trackassembly.pn_contextm_stsz=Копирай размера
tool.trackassembly.pn_contextm_sttm=Копирай времето
tool.trackassembly.pn_contextm_tg=Превключи
tool.trackassembly.pn_contextm_ws=Работилница
tool.trackassembly.pn_contextm_wsid=Копирай WID
tool.trackassembly.pn_contextm_wsop=Отвори URL
tool.trackassembly.pn_display=Моделът на вашето парче трасе се показва тук
tool.trackassembly.pn_display_lb=Дисплей за парчето
tool.trackassembly.pn_export=Цъкнете за да съхраните базата данни на файл
tool.trackassembly.pn_export_lb=Съхрани DB
tool.trackassembly.pn_extdsv_act=Активен
tool.trackassembly.pn_extdsv_hd=Списъка на DSV базите данни е показан тук
tool.trackassembly.pn_extdsv_inf=Допълнителна информация
tool.trackassembly.pn_extdsv_lb=Външен DSV списък
tool.trackassembly.pn_extdsv_prf=Уникален префикс на базата
tool.trackassembly.pn_externdb_bte=Експорт
tool.trackassembly.pn_externdb_bte_tp=Експортира информацията от панела към файла за използване
tool.trackassembly.pn_externdb_bti=Импорт
tool.trackassembly.pn_externdb_bti_tp=Импортира информацията от файла към панела за редактиране
tool.trackassembly.pn_externdb_hd=Външни бази данни на\:
tool.trackassembly.pn_externdb_ttt=Текущата стойност от конфигурацията\:
tool.trackassembly.pn_pattern=Напишете шаблон тук и натиснете ЕНТЪР за да извършите търсене
tool.trackassembly.pn_pattern_lb=Напишете шаблон
tool.trackassembly.pn_routine=Списъкът с редовно използваните ви парчета трасе
tool.trackassembly.pn_routine_end=Ръб
tool.trackassembly.pn_routine_hd=Редовни парчета на\:
tool.trackassembly.pn_routine_lb=Рутинни обекти
tool.trackassembly.pn_routine_mod=Модел
tool.trackassembly.pn_routine_nam=Име
tool.trackassembly.pn_routine_typ=Тип
tool.trackassembly.pn_routine_use=Срок
tool.trackassembly.pn_srchcol=Изберете по коя колона да извършите търсене
tool.trackassembly.pn_srchcol_lb=<Търси по>
tool.trackassembly.pntasist=Управлява изобразяването на асистента за лепене
tool.trackassembly.pntasist_con=Изобразявай асистента
tool.trackassembly.relica_var=Контроли за репликирани променливи. Сървъра изпраща базова стойност до всички клиенти
tool.trackassembly.reload.1=Премахване на парче трасе. Задръжте SHIFT за да изберете опора
tool.trackassembly.reload.2=Премахване на парче трасе. Задръжте SHIFT изберете релационен лъч
tool.trackassembly.reload.3=Премахване на възел от интерполираната крива. Задръжте SHIFT за да изчистите стека
@ -34,234 +222,60 @@ tool.trackassembly.reload_use.2=Позволете експорт на данн
tool.trackassembly.reload_use.3=Позволете експорт на данните за да отворите DSV мениджър
tool.trackassembly.reload_use.4=Позволете експорт на данните за да отворите DSV мениджър
tool.trackassembly.reload_use.5=Позволете експорт на данните за да отворите DSV мениджър
tool.trackassembly.desc=Сглобява трасе по което да вървят превозните средства
tool.trackassembly.name=Монтаж на трасе
tool.trackassembly.phytype=Изберете типа на физическите свойства от дадените тук
tool.trackassembly.phytype_con=Тип на повърхността\:
tool.trackassembly.phytype_def=<Избери тип на повърхността>
tool.trackassembly.phyname=Изберете името на физическите свойства което да се използва при създаване на трасе като това ще повлияе на повърхностното триене
tool.trackassembly.phyname_con=Име на повърхността\:
tool.trackassembly.phyname_def=<Избери име на повърхността>
tool.trackassembly.bgskids=Селекционен код за избор на Телесна-група/Кожа ID
tool.trackassembly.bgskids_con=Телесна-група/Кожа\:
tool.trackassembly.bgskids_def=Запишете селекционен код тук. Например 1,0,0,2,1/3
tool.trackassembly.mass=Колко тежко ще бъде създаденото парче
tool.trackassembly.mass_con=Маса на парчето\:
tool.trackassembly.model=Изберете парче за да започнете/продължите трасето си избирайки типа в дървото и кликвайки на листо
tool.trackassembly.model_con=Модел на парчето\:
tool.trackassembly.activrad=Минимално разстояние за да се избере активна точка
tool.trackassembly.activrad_con=Активен радиус\:
tool.trackassembly.stackcnt=Максимален брой парчета които може да се създадат при натрупване
tool.trackassembly.stackcnt_con=Брой парчета\:
tool.trackassembly.angsnap=Залепете първото създадено парче на толкова градуса
tool.trackassembly.angsnap_con=Ъглово подравняване\:
tool.trackassembly.resetvars=Цъкнете за да нулирате допълнителните стойности
tool.trackassembly.resetvars_con=V Нулиране на променливите V
tool.trackassembly.nextpic=Допълнително отместване на началото по тангаж
tool.trackassembly.nextpic_con=Тангаж на началото\:
tool.trackassembly.nextyaw=Допълнително отместване на началото по азимут
tool.trackassembly.nextyaw_con=Азимут на началото\:
tool.trackassembly.nextrol=Допълнително отместване на началото по крен
tool.trackassembly.nextrol_con=Крен на началото\:
tool.trackassembly.nextx=Допълнително отместване на началото по абсциса
tool.trackassembly.nextx_con=Отместване по абсциса\:
tool.trackassembly.nexty=Допълнително отместване на началото по ордината
tool.trackassembly.nexty_con=Отместване по ордината\:
tool.trackassembly.nextz=Допълнително отместване на началото по апликата
tool.trackassembly.nextz_con=Отместване по апликата\:
tool.trackassembly.gravity=Управлява гравитацията върху създаденото парче
tool.trackassembly.gravity_con=Приложи гравитация върху парчето
tool.trackassembly.weld=Създава заварки между парчетата или парчета/опора
tool.trackassembly.weld_con=Създай заварка
tool.trackassembly.forcelim=Управлява колко сила е необходима за да се счупи заварката
tool.trackassembly.forcelim_con=Якост на заварката\:
tool.trackassembly.ignphysgn=Пренебрегва хващането с физическо оръдие на парчето създадено/залепено/натрупано
tool.trackassembly.ignphysgn_con=Пренебрегни хващането с физическо оръдие
tool.trackassembly.nocollide=Създава не-сблъсък между парчетата или парчета/опора
tool.trackassembly.nocollide_con=Създай не-сблъсък
tool.trackassembly.nocollidew=Създава не-сблъсък между парчетата и света
tool.trackassembly.nocollidew_con=Създай не-сблъсък свят
tool.trackassembly.freeze=Създава парчето в замразено състояние
tool.trackassembly.freeze_con=Замрази парчето
tool.trackassembly.igntype=Пренебрегва различните типове парчета при лепене/натрупване
tool.trackassembly.igntype_con=Пренебрегни типа на парчето
tool.trackassembly.spnflat=Следващото парче ще бъде създадено/залепено/натрупано хоризонтално
tool.trackassembly.spnflat_con=Създай хоризонтално
tool.trackassembly.spawncn=Създава парчето в центъра иначе спрямо избраната активна точка
tool.trackassembly.spawncn_con=Начало спрямо центъра
tool.trackassembly.surfsnap=Залепи парчето по повърхнината към която сочи потребителя
tool.trackassembly.surfsnap_con=Залепи по повърхнината
tool.trackassembly.appangfst=Приложи ъгловото отместване само върху първото парче за насочване
tool.trackassembly.appangfst_con=Приложи ъгловото на първи
tool.trackassembly.applinfst=Приложи линейното отместване само върху първото парче за позициониране
tool.trackassembly.applinfst_con=Приложи линейното на първи
tool.trackassembly.adviser=Управлява изобразяването на позиционен/ъглов съветник
tool.trackassembly.adviser_con=Изобразявай съветника
tool.trackassembly.pntasist=Управлява изобразяването на асистента за лепене
tool.trackassembly.pntasist_con=Изобразявай асистента
tool.trackassembly.ghostcnt=Управлява изобразяването на броя парчета сенки
tool.trackassembly.ghostcnt_con=Изобразявай парчета сенки
tool.trackassembly.ghostblnd=Управлява прозрачността на парчето сянка. Малка стойност за по-прозрачно
tool.trackassembly.ghostblnd_con=Преливане на парчета сенки\:
tool.trackassembly.dtmessage=Управлява времевия интервал между сървърните съобщения на контекстното меню
tool.trackassembly.dtmessage_con=Времеви интервал\:
tool.trackassembly.engunsnap=Управлява залепването когато парчето е изпуснато с физическото оръдие на играча
tool.trackassembly.engunsnap_con=Залепване при изпускане
tool.trackassembly.upspanchor=Включете за обновяване на опората при всяко създаване без натрупвате
tool.trackassembly.upspanchor_con=Обнови опората при създаване
tool.trackassembly.type=Изберете типа трасе което да използвате като разширите папката
tool.trackassembly.type_con=Тип трасе\:
tool.trackassembly.subfolder=Изберете категорията трасе която да използвате като разширите папката
tool.trackassembly.subfolder_con=Категория трасе\:
tool.trackassembly.workmode=Сменете тази опция за да изберете различен режим на работа
tool.trackassembly.workmode_con=Работен режим\:
tool.trackassembly.pn_export=Цъкнете за да съхраните базата данни на файл
tool.trackassembly.pn_export_lb=Съхрани DB
tool.trackassembly.pn_routine=Списъкът с редовно използваните ви парчета трасе
tool.trackassembly.pn_routine_hd=Редовни парчета на\:
tool.trackassembly.pn_externdb=Налични външни бази данни на\:
tool.trackassembly.pn_externdb_hd=Външни бази данни на\:
tool.trackassembly.pn_externdb_lb=Десен клик за опции\:
tool.trackassembly.pn_externdb_ttt=Текущата стойност от конфигурацията\:
tool.trackassembly.pn_externdb_bti=Импорт
tool.trackassembly.pn_externdb_bti_tp=Импортира информацията от файла към панела за редактиране
tool.trackassembly.pn_externdb_bte=Експорт
tool.trackassembly.pn_externdb_bte_tp=Експортира информацията от панела към файла за използване
tool.trackassembly.pn_externdb_bt1=Копирай уникален префикс
tool.trackassembly.pn_externdb_bt2=Копирай пътя към DSV папката
tool.trackassembly.pn_externdb_bt3=Копирай ника на таблицата
tool.trackassembly.pn_externdb_bt4=Копирай пътя към таблицата
tool.trackassembly.pn_externdb_bt5=Копирай времето на таблицата
tool.trackassembly.pn_externdb_bt6=Копирай размера на таблицата
tool.trackassembly.pn_externdb_bt7=Редактирай елементите (Luapad)
tool.trackassembly.pn_externdb_bt8=Изтрий файла на базата данни
tool.trackassembly.pn_externdb_cm1=Копирай стойността
tool.trackassembly.pn_externdb_cm2=Копирай цялата линия
tool.trackassembly.pn_externdb_cm3=Разреши/Забрани
tool.trackassembly.pn_externdb_cm4=Промени линията
tool.trackassembly.pn_externdb_cm5=Създай нова линия
tool.trackassembly.pn_externdb_cm6=Премахни линията
tool.trackassembly.pn_ext_dsv_lb=Външен DSV списък
tool.trackassembly.pn_ext_dsv_hd=Списъка на DSV базите данни е показан тук
tool.trackassembly.pn_ext_dsv_1=Активен
tool.trackassembly.pn_ext_dsv_2=Уникален префикс на базата
tool.trackassembly.pn_ext_dsv_3=Допълнителна информация
tool.trackassembly.pn_display=Моделът на вашето парче трасе се показва тук
tool.trackassembly.pn_pattern=Напишете шаблон тук и натиснете ЕНТЪР за да извършите търсене
tool.trackassembly.pn_srchcol=Изберете по коя колона да извършите търсене
tool.trackassembly.pn_srchcol_lb=<Търси по>
tool.trackassembly.pn_srchcol_lb1=Модел
tool.trackassembly.pn_srchcol_lb2=Тип
tool.trackassembly.pn_srchcol_lb3=Име
tool.trackassembly.pn_srchcol_lb4=Ръб
tool.trackassembly.pn_routine_lb=Рутинни обекти
tool.trackassembly.pn_routine_lb1=Срок
tool.trackassembly.pn_routine_lb2=Ръб
tool.trackassembly.pn_routine_lb3=Тип
tool.trackassembly.pn_routine_lb4=Име
tool.trackassembly.pn_display_lb=Дисплей за парчето
tool.trackassembly.pn_pattern_lb=Напишете шаблон
tool.trackassembly.sizeucs=Мащаб за показваните координатни системи
tool.trackassembly.sizeucs_con=Мащаб UCS\:
tool.trackassembly.maxstatts=Дефинира след колко опита за натрупване на парче ще се изведе грешка
tool.trackassembly.maxstatts_con=Опити за натрупване\:
tool.trackassembly.incsnpang=Дефинира стъпката на ъглово отместване за слайд бутоните
tool.trackassembly.incsnpang_con=Ъглова стъпка\:
tool.trackassembly.incsnplin=Дефинира стъпката на линейно отместване за слайд бутоните
tool.trackassembly.incsnplin_con=Линейна стъпка\:
tool.trackassembly.enradmenu=Когато се пусне позволява управление на режимите на работа чрез кръгово меню
tool.trackassembly.enradmenu_con=Разреши кръгово меню
tool.trackassembly.sgradmenu=Променете за да направите на кръговото меню по-гладко. По-голяма стойност за по-гладко
tool.trackassembly.sgradmenu_con=Радиални сегменти\:
tool.trackassembly.right.1=Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right.2=Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right.3=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите
tool.trackassembly.right.4=Регистриране на предмет в списъка за обръщане. Задръжте SHIFT за смяна на модела
tool.trackassembly.right.5=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите
tool.trackassembly.right_use.1=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right_use.2=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right_use.3=Генериране на възел от най-близката активна точка на парчето
tool.trackassembly.right_use.4=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.right_use.5=Генериране на възел от най-близката активна точка на парчето
tool.trackassembly.rtradmenu=Променете за да настроите базовия ъгъл на кръговото меню и да преместите опциите
tool.trackassembly.rtradmenu_con=Радиална ротация\:
tool.trackassembly.enpntmscr=Когато се разреши позволява превключване на активните точки чрез скрола на мишката
tool.trackassembly.enpntmscr_con=Разреши скрола за точките
tool.trackassembly.exportdb=Когато се пусне разрешава експортирането на базата данни в един голям файл
tool.trackassembly.exportdb_con=Разреши експорт на базата данни
tool.trackassembly.devmode=Когато се разреши пуска режим на разработчик за анализ и дебъг на грешки
tool.trackassembly.devmode_con=Включи режим на разработчик
tool.trackassembly.maxtrmarg=Променете тук за да използвате различен интервал между проследяванията
tool.trackassembly.maxtrmarg_con=Марж на проследяване\:
tool.trackassembly.maxspmarg=Променете тук за да настроите маржа на разстоянието от предишното създаване
tool.trackassembly.maxspmarg_con=Марж на създаване\:
tool.trackassembly.maxmenupr=Променете тук за да използвате различен брой знаци след десетичната точка
tool.trackassembly.maxmenupr_con=Десетични знаци\:
tool.trackassembly.maxmass=Променете тук за да настроите максималната маза на парчетата при създаване
tool.trackassembly.maxmass_con=Граница на маса\:
tool.trackassembly.maxlinear=Променете тук за да настроите максималното отместване на парчето
tool.trackassembly.maxlinear_con=Граница на отместване\:
tool.trackassembly.maxforce=Променете тук за да настроите максималната сила при на заварките
tool.trackassembly.maxforce_con=Граница на сила\:
tool.trackassembly.maxactrad=Променете тук за да настроите максималния радиус за взимане на индекс за снаждане
tool.trackassembly.maxactrad_con=Граница на радиус\:
tool.trackassembly.maxstcnt=Променете тук за да настроите максималния брой парчета в режим на натрупване
tool.trackassembly.maxstcnt_con=Граница на натрупване\:
tool.trackassembly.maxghcnt=Променете тук за да настроите максималния брой парчета сенки при натрупване
tool.trackassembly.maxghcnt_con=Граница на парчета сенки\:
tool.trackassembly.enwiremod=Когато е разрешено включва разширението за wiremod expression чипа
tool.trackassembly.enwiremod_con=Включи wiremod expression
tool.trackassembly.enmultask=Когато е разрешено включва многозадачната система по време на натрупване
tool.trackassembly.enmultask_con=Включи многозадачна система
tool.trackassembly.enctxmenu=Когато е разрешено включва специалното контекстно меню за парчета трасе
tool.trackassembly.enctxmenu_con=Включи контекстно меню
tool.trackassembly.enctxmall=Когато е разрешено включва специалното контекстно меню за всички предмети
tool.trackassembly.enctxmall_con=Разреши контекстно меню за всички
tool.trackassembly.endsvlock=Когато е разрешено заключва файловете на външната DSV база данни
tool.trackassembly.endsvlock_con=Разреши DSV заключването
tool.trackassembly.curvefact=Променете тук за да настроите тангенциалния коефициент на кривата
tool.trackassembly.curvefact_con=Фактор на кривата\:
tool.trackassembly.curvsmple=Променете тук за да настроите интерполационните проби на кривата
tool.trackassembly.curvsmple_con=Проби на кривата\:
tool.trackassembly.crvturnlm=Променете тук за да настроите остротата на завоя при сегментиране на кривата
tool.trackassembly.crvturnlm_con=Завой на кривината\:
tool.trackassembly.crvleanlm=Променете тук за да настроите остротата на наклона при сегментиране на кривата
tool.trackassembly.crvleanlm_con=Наклон на кривината\:
tool.trackassembly.sgradmenu=Променете за да направите на кръговото меню по-гладко. По-голяма стойност за по-гладко
tool.trackassembly.sgradmenu_con=Радиални сегменти\:
tool.trackassembly.sizeucs=Мащаб за показваните координатни системи
tool.trackassembly.sizeucs_con=Мащаб UCS\:
tool.trackassembly.spawncn=Създава парчето в центъра иначе спрямо избраната активна точка
tool.trackassembly.spawncn_con=Начало спрямо центъра
tool.trackassembly.spawnrate=Променете тук за да настроите броя сегменти създадени за един сървърен тик
tool.trackassembly.spawnrate_con=Ставка на създаване\:
tool.trackassembly.bnderrmod=Променете тук за да дефинирате поведение когато клиентите създават парчета извън картата
tool.trackassembly.bnderrmod_off=Разрешено натрупване/създаване без граници
tool.trackassembly.bnderrmod_log=Забранено натрупване/създаване грешката е записана
tool.trackassembly.bnderrmod_hint=Забранено натрупване/създаване подсказка е изобразена
tool.trackassembly.bnderrmod_generic=Забранено натрупване/създаване съобщение е изписано
tool.trackassembly.bnderrmod_error=Забранено натрупване/създаване грешка е показана
tool.trackassembly.bnderrmod_con=Режим на ограничение\:
tool.trackassembly.modedb=Променете тук за да дефинирате поведението при съхранение на базата данни
tool.trackassembly.modedb_lua=Използвайте директно съхранение в кеша
tool.trackassembly.modedb_sql=Кеширане само на заявените записи
tool.trackassembly.modedb_con=Режим на базата\:
tool.trackassembly.maxfruse=Променете тук за да настроите дълбочината на често срещаните парчета в списъка
tool.trackassembly.maxfruse_con=Чести парчета\:
tool.trackassembly.spnflat=Следващото парче ще бъде създадено/залепено/натрупано хоризонтално
tool.trackassembly.spnflat_con=Създай хоризонтално
tool.trackassembly.stackcnt=Максимален брой парчета които може да се създадат при натрупване
tool.trackassembly.stackcnt_con=Брой парчета\:
tool.trackassembly.subfolder=Изберете категорията трасе която да използвате като разширите папката
tool.trackassembly.subfolder_con=Категория трасе\:
tool.trackassembly.surfsnap=Залепи парчето по повърхнината към която сочи потребителя
tool.trackassembly.surfsnap_con=Залепи по повърхнината
tool.trackassembly.timermode_ap=Кликнете за да приложите избраните настройки върху мениджъра на паметта
tool.trackassembly.timermode_ap_con=Приложи паметни настройки
tool.trackassembly.timermode_md=Променете тук за да изберете алгоритъм за таймера на мениджъра на паметта
tool.trackassembly.timermode_lf=Променете тук за да настроите времето което всеки запис прекарва в кеша
tool.trackassembly.timermode_lf_con=Живот на записа\:
tool.trackassembly.timermode_rd=Когато е включено намазва кеша като записва празна стойност
tool.trackassembly.timermode_rd_con=Включи триене на записи
tool.trackassembly.timermode_cqt=Кеш таймер по заявка на запис
tool.trackassembly.timermode_ct=Когато е включено пуска почистването на боклука след всяко триене
tool.trackassembly.timermode_ct_con=Включи почистване на боклука
tool.trackassembly.timermode_lf=Променете тук за да настроите времето което всеки запис прекарва в кеша
tool.trackassembly.timermode_lf_con=Живот на записа\:
tool.trackassembly.timermode_md=Променете тук за да изберете алгоритъм за таймера на мениджъра на паметта
tool.trackassembly.timermode_mem=Мениджър на паметта за SQL таблица\:
tool.trackassembly.timermode_cqt=Кеш таймер по заявка на запис
tool.trackassembly.timermode_obj=Таймерен обект закачен за запис
tool.trackassembly.factory_reset=Кликнете за да приложите фабрични настройки на конзолните променливи
tool.trackassembly.factory_reset_con=Приложи фабрични настройки
tool.trackassembly.logfile=Когато е включено започва да пише лог поток в специален файл
tool.trackassembly.logfile_con=Включи лог файла
tool.trackassembly.logsmax=Променете тук за да настроите максималните линии за дължина на лога
tool.trackassembly.logsmax_con=Дължина на лога\:
tool.trackassembly.client_var=Клиентски предпочитания на играча. Променливи създадени чрез инструмента конфигурация
tool.trackassembly.nonrep_var=Контроли за не-репликирани променливи. Приемат различни стойности на сървъра и клиента
tool.trackassembly.relica_var=Контроли за репликирани променливи. Сървъра изпраща базова стойност до всички клиенти
tool.trackassembly.utilities_user=Потребителски настройки
tool.trackassembly.timermode_rd=Когато е включено намазва кеша като записва празна стойност
tool.trackassembly.timermode_rd_con=Включи триене на записи
tool.trackassembly.type=Изберете типа трасе което да използвате като разширите папката
tool.trackassembly.type_con=Тип трасе\:
tool.trackassembly.upspanchor=Включете за обновяване на опората при всяко създаване без натрупвате
tool.trackassembly.upspanchor_con=Обнови опората при създаване
tool.trackassembly.utilities_admin=Администраторски настройки
tool.trackassembly.buttonas<>=Намали/Увеличи
tool.trackassembly.buttonas+/-=Обърни знака
tool.trackassembly.buttonas@M=Запомни стойност
tool.trackassembly.buttonas@D=Дефолтна стойност
tool.trackassembly.buttonas@=Приложи стойност\:
sbox_maxasmtracks=Променете тук за да настроите нещата които са създадени от инструмента на сървъра
sbox_maxasmtracks_con=Общо сегменти\:
Cleanup_asmtracks=Сглобени парчета трасе
Cleaned_asmtracks=Всички парчета трасе са почистени
SBoxLimit_asmtracks=Достигнахте границата на създадените парчета трасе!
tool.trackassembly.utilities_user=Потребителски настройки
tool.trackassembly.weld=Създава заварки между парчетата или парчета/опора
tool.trackassembly.weld_con=Създай заварка
tool.trackassembly.workmode.1=Обикновено създаване/залепяне
tool.trackassembly.workmode.2=Пресичане на активни точки
tool.trackassembly.workmode.3=Линейна сегментна интерполация
tool.trackassembly.workmode.4=Преобръщане спрямо нормалата
tool.trackassembly.workmode.5=Преход на завой по допирателна
tool.trackassembly.workmode=Сменете тази опция за да изберете различен режим на работа
tool.trackassembly.workmode_con=Работен режим\:

View File

@ -1,9 +1,88 @@

tool.trackassembly.workmode.1=General spawn/snap pieces
tool.trackassembly.workmode.2=Active point intersection
tool.trackassembly.workmode.3=Curve line segment fitting
tool.trackassembly.workmode.4=Surface normal flip over
tool.trackassembly.workmode.5=Tangent transition turns
Cleaned_asmtracks=Cleaned up all track pieces
Cleanup_asmtracks=Assembled track pieces
SBoxLimit_asmtracks=You've hit the spawned tracks limit!
sbox_maxasmtracks=Change this to adjust the things spawned via track assembly tool on the server
sbox_maxasmtracks_con=Total segments\:
tool.trackassembly.activrad=Minimum distance needed to select an active point
tool.trackassembly.activrad_con=Active radius\:
tool.trackassembly.adviser=Controls rendering the tool position/angle adviser
tool.trackassembly.adviser_con=Draw adviser
tool.trackassembly.angsnap=Snap the first piece spawned at this much degrees
tool.trackassembly.angsnap_con=Angular alignment\:
tool.trackassembly.appangfst=Apply the angular offsets only on the first piece
tool.trackassembly.appangfst_con=Apply angular on first
tool.trackassembly.applinfst=Apply the linear offsets only on the first piece
tool.trackassembly.applinfst_con=Apply linear on first
tool.trackassembly.bgskids=Selection code of comma delimited Bodygroup/Skin ID
tool.trackassembly.bgskids_con=Bodygroup/Skin\:
tool.trackassembly.bgskids_def=Write selection code here. For example 1,0,0,2,1/3
tool.trackassembly.bnderrmod=Change this to define the behavior when clients are spawning pieces outside of map bounds
tool.trackassembly.bnderrmod_con=Bounding mode\:
tool.trackassembly.bnderrmod_error=Deny stack/spawn error message is displayed
tool.trackassembly.bnderrmod_generic=Deny stack/spawn generic message is displayed
tool.trackassembly.bnderrmod_hint=Deny stack/spawn hint message is displayed
tool.trackassembly.bnderrmod_log=Deny stack/spawn the error is logged
tool.trackassembly.bnderrmod_off=Allow stack/spawn without restriction
tool.trackassembly.buttonas+/-=Negate value
tool.trackassembly.buttonas<>=Decrement/Increment
tool.trackassembly.buttonas@=Apply value\:
tool.trackassembly.buttonas@D=Default value
tool.trackassembly.buttonas@M=Memorize value
tool.trackassembly.client_var=Client side player preferences. Convars created in the tool client configuration
tool.trackassembly.crvleanlm=Change this to adjust the lean curving sharpness limit for the segment
tool.trackassembly.crvleanlm_con=Curvature lean\:
tool.trackassembly.crvsuprev=Change this to adjust the super-elevation magnitude used in the corners
tool.trackassembly.crvsuprev_con=Super elevation\:
tool.trackassembly.crvturnlm=Change this to adjust the turn curving sharpness limit for the segment
tool.trackassembly.crvturnlm_con=Curvature turn\:
tool.trackassembly.curvefact=Change this to adjust the curving factor tangent coefficient
tool.trackassembly.curvefact_con=Curve factor\:
tool.trackassembly.curvsmple=Change this to adjust the curving interpolation samples
tool.trackassembly.curvsmple_con=Curve samples\:
tool.trackassembly.desc=Assembles a track for the vehicles to run on
tool.trackassembly.devmode=When enabled turns on the developer mode for tracking and debugging
tool.trackassembly.devmode_con=Enable developer mode
tool.trackassembly.dtmessage=Controls time intervals between context menu server messages
tool.trackassembly.dtmessage_con=Message delta\:
tool.trackassembly.enctxmall=When enabled turns on the tool dedicated context menu for all props
tool.trackassembly.enctxmall_con=Enable context menu for all props
tool.trackassembly.enctxmenu=When enabled turns on the tool dedicated context menu for pieces
tool.trackassembly.enctxmenu_con=Enable context menu
tool.trackassembly.endsvlock=When enabled turns on the external pluggable DSV databases file lock
tool.trackassembly.endsvlock_con=Enable DSV database lock
tool.trackassembly.engunsnap=Controls snapping when the piece is dropped by the player physics gun
tool.trackassembly.engunsnap_con=Enable physics gun snap
tool.trackassembly.enmultask=When enabled turns on the multitasking during stacking mode
tool.trackassembly.enmultask_con=Enable multitasking
tool.trackassembly.enpntmscr=When enabled turns on the switching active points via mouse scroll
tool.trackassembly.enpntmscr_con=Enable point scroll
tool.trackassembly.enradmenu=When enabled turns on the usage of the work mode radial menu
tool.trackassembly.enradmenu_con=Enable radial menu
tool.trackassembly.enwiremod=When enabled turns on the wiremod expression chip extension
tool.trackassembly.enwiremod_con=Enable wire expression
tool.trackassembly.exportdb=When enabled turns on the database export as one large file
tool.trackassembly.exportdb_con=Enable database export
tool.trackassembly.factory_reset=Click this to apply console variables factory settings
tool.trackassembly.factory_reset_con=Apply factory settings
tool.trackassembly.forcelim=Controls how much force is needed to break the weld
tool.trackassembly.forcelim_con=Force limit\:
tool.trackassembly.freeze=Makes the piece spawn in a frozen state
tool.trackassembly.freeze_con=Freeze piece
tool.trackassembly.ghostblnd=Controls ghosts transparency blend. The lower the value more transperent
tool.trackassembly.ghostblnd_con=Ghosts blend\:
tool.trackassembly.ghostcnt=Controls rendering the tool ghosted holder pieces count
tool.trackassembly.ghostcnt_con=Ghosts count\:
tool.trackassembly.gravity=Controls the gravity on the piece spawned
tool.trackassembly.gravity_con=Apply piece gravity
tool.trackassembly.ignphysgn=Ignores physics gun grab on the piece spawned/snapped/stacked
tool.trackassembly.ignphysgn_con=Ignore physics gun
tool.trackassembly.igntype=Makes the tool ignore the different piece types on snapping/stacking
tool.trackassembly.igntype_con=Ignore track type
tool.trackassembly.incsnpang=Defines the angular incremental step when button sliders are used
tool.trackassembly.incsnpang_con=Angular step\:
tool.trackassembly.incsnplin=Defines the linear incremental step when button sliders are used
tool.trackassembly.incsnplin_con=Linear step\:
tool.trackassembly.info.1=Spawns pieces on the map or snaps them relative to each other
tool.trackassembly.info.2=Connects track sections with dedicated segment designed for that
tool.trackassembly.info.3=Creates continuous track layouts passing through given checkpoints
@ -14,16 +93,125 @@ tool.trackassembly.left.2=Spawn track piece at the intersection point
tool.trackassembly.left.3=Spawn segmented track interpolation curve
tool.trackassembly.left.4=Spawn flipped over list of tracks selected
tool.trackassembly.left.5=Spawn segmented track interpolation curve
tool.trackassembly.right.1=Copy track piece model or open frequent pieces frame
tool.trackassembly.right.2=Copy track piece model or open frequent pieces frame
tool.trackassembly.right.3=Create node for the segmented curve. Hold SHIFT to update
tool.trackassembly.right.4=Register entity in the flip over list. Hold SHIFT to change model
tool.trackassembly.right.5=Create node for the segmented curve. Hold SHIFT to update
tool.trackassembly.right_use.1=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.right_use.2=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.right_use.3=Generate node from the nearest track piece active point
tool.trackassembly.right_use.4=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.right_use.5=Generate node from the nearest track piece active point
tool.trackassembly.logfile=When enabled starts streaming the log into dedicated file
tool.trackassembly.logfile_con=Enable logging file
tool.trackassembly.logsmax=Change this to adjust the log streaming maximum output lines written
tool.trackassembly.logsmax_con=Logging lines\:
tool.trackassembly.mass=How heavy the piece spawned will be
tool.trackassembly.mass_con=Piece mass\:
tool.trackassembly.maxactrad=Change this to adjust the maximum active radius for obtaining point ID
tool.trackassembly.maxactrad_con=Radius limit\:
tool.trackassembly.maxforce=Change this to adjust the maximum force limit when creating welds
tool.trackassembly.maxforce_con=Force limit\:
tool.trackassembly.maxfruse=Change this to adjust the depth of how many frequently used pieces are there
tool.trackassembly.maxfruse_con=Frequent pieces\:
tool.trackassembly.maxghcnt=Change this to adjust the maximum pieces to be ghosted in stacking mode
tool.trackassembly.maxghcnt_con=Ghosts limit\:
tool.trackassembly.maxlinear=Change this to adjust the maximum linear offset on a piece
tool.trackassembly.maxlinear_con=Offset limit\:
tool.trackassembly.maxmass=Change this to adjust the maximum mass that can be applied on a piece
tool.trackassembly.maxmass_con=Mass limit\:
tool.trackassembly.maxmenupr=Change this to adjust the number of the decimal places in the menu
tool.trackassembly.maxmenupr_con=Decimal places\:
tool.trackassembly.maxspmarg=Change this to adjust the distance margin from the previous spawn
tool.trackassembly.maxspmarg_con=Spawn margin\:
tool.trackassembly.maxstatts=Defines how many stack attempts the script will try before failing
tool.trackassembly.maxstatts_con=Stack attempts\:
tool.trackassembly.maxstcnt=Change this to adjust the maximum pieces to be created in stacking mode
tool.trackassembly.maxstcnt_con=Stack limit\:
tool.trackassembly.maxtrmarg=Change this to adjust the time between tool traces
tool.trackassembly.maxtrmarg_con=Trace margin\:
tool.trackassembly.modedb=Change this to define the storage behavior of the track database
tool.trackassembly.modedb_con=Database mode\:
tool.trackassembly.modedb_lua=Utilize direct cache storage
tool.trackassembly.modedb_sql=Cache requested records only
tool.trackassembly.model=Select a piece to start/continue your track with by expanding a type and clicking on a node
tool.trackassembly.model_con=Piece model\:
tool.trackassembly.name=Track assembly
tool.trackassembly.nextpic=Additional origin angular pitch offset
tool.trackassembly.nextpic_con=Origin pitch\:
tool.trackassembly.nextrol=Additional origin angular roll offset
tool.trackassembly.nextrol_con=Origin roll\:
tool.trackassembly.nextx=Additional origin linear X offset
tool.trackassembly.nextx_con=Offset X\:
tool.trackassembly.nexty=Additional origin linear Y offset
tool.trackassembly.nexty_con=Offset Y\:
tool.trackassembly.nextyaw=Additional origin angular yaw offset
tool.trackassembly.nextyaw_con=Origin yaw\:
tool.trackassembly.nextz=Additional origin linear Z offset
tool.trackassembly.nextz_con=Offset Z\:
tool.trackassembly.nocollide=Creates a no-collide between pieces or pieces/anchor
tool.trackassembly.nocollide_con=NoCollide
tool.trackassembly.nocollidew=Creates a no-collide between pieces and world
tool.trackassembly.nocollidew_con=NoCollide world
tool.trackassembly.nonrep_var=Non-replicated convar controls. They have different values on server and client
tool.trackassembly.phyname=Select physical properties name to use when creating the track as this will affect the surface friction
tool.trackassembly.phyname_con=Material name\:
tool.trackassembly.phyname_def=<Select Surface Material NAME>
tool.trackassembly.phytype=Select physical properties type of the ones listed here
tool.trackassembly.phytype_con=Material type\:
tool.trackassembly.phytype_def=<Select Surface Material TYPE>
tool.trackassembly.pn_contextm_cp=Copy
tool.trackassembly.pn_contextm_cpbx=Box
tool.trackassembly.pn_contextm_cpmd=Model
tool.trackassembly.pn_contextm_cpnm=Name
tool.trackassembly.pn_contextm_cprw=Row
tool.trackassembly.pn_contextm_cpth=Path
tool.trackassembly.pn_contextm_cpty=Type
tool.trackassembly.pn_contextm_ep=Expand node
tool.trackassembly.pn_contextm_ex=Export
tool.trackassembly.pn_contextm_exdv=Extern
tool.trackassembly.pn_contextm_exru=Autorun
tool.trackassembly.pn_contextm_li=Line
tool.trackassembly.pn_contextm_licg=Change
tool.trackassembly.pn_contextm_licr=Create
tool.trackassembly.pn_contextm_lirm=Remove
tool.trackassembly.pn_contextm_mv=Move
tool.trackassembly.pn_contextm_mvbt=Bottom
tool.trackassembly.pn_contextm_mvdn=Down
tool.trackassembly.pn_contextm_mvtp=Top
tool.trackassembly.pn_contextm_mvup=Up
tool.trackassembly.pn_contextm_st=Tables
tool.trackassembly.pn_contextm_stdl=Delete files
tool.trackassembly.pn_contextm_sted=Edit (Luapad)
tool.trackassembly.pn_contextm_stnk=Copy nick
tool.trackassembly.pn_contextm_stpt=Copy path
tool.trackassembly.pn_contextm_stsz=Copy size
tool.trackassembly.pn_contextm_sttm=Copy time
tool.trackassembly.pn_contextm_tg=Toggle
tool.trackassembly.pn_contextm_ws=Workshop
tool.trackassembly.pn_contextm_wsid=Copy WID
tool.trackassembly.pn_contextm_wsop=Open page
tool.trackassembly.pn_display=The model of your track piece is displayed here
tool.trackassembly.pn_display_lb=Piece display
tool.trackassembly.pn_export=Click to export the client database as a file
tool.trackassembly.pn_export_lb=Export DB
tool.trackassembly.pn_extdsv_act=Active
tool.trackassembly.pn_extdsv_hd=External DSV databases list is displayed here
tool.trackassembly.pn_extdsv_inf=Additional information
tool.trackassembly.pn_extdsv_lb=External DSV list
tool.trackassembly.pn_extdsv_prf=Database unique prefix
tool.trackassembly.pn_externdb_bte=Export
tool.trackassembly.pn_externdb_bte_tp=Exports information from the panel to the file list and apply
tool.trackassembly.pn_externdb_bti=Import
tool.trackassembly.pn_externdb_bti_tp=Imports information from the file list into the panel to edit
tool.trackassembly.pn_externdb_hd=External databases by\:
tool.trackassembly.pn_externdb_ttt=Current modified configuration value\:
tool.trackassembly.pn_pattern=Write a pattern here and hit ENTER to perform a search
tool.trackassembly.pn_pattern_lb=Write pattern
tool.trackassembly.pn_routine=The list of your frequently used track pieces
tool.trackassembly.pn_routine_end=End
tool.trackassembly.pn_routine_hd=Frequent pieces by\:
tool.trackassembly.pn_routine_lb=Routine items
tool.trackassembly.pn_routine_mod=Model
tool.trackassembly.pn_routine_nam=Name
tool.trackassembly.pn_routine_typ=Type
tool.trackassembly.pn_routine_use=Used
tool.trackassembly.pn_srchcol=Choose which list column you want to perform a search on
tool.trackassembly.pn_srchcol_lb=<Search by>
tool.trackassembly.pntasist=Controls rendering the tool snap point assistant
tool.trackassembly.pntasist_con=Draw assistant
tool.trackassembly.relica_var=Replicated convar controls. The server value is sent to all clients to use
tool.trackassembly.reload.1=Remove a track piece. Hold SHIFT to select an anchor
tool.trackassembly.reload.2=Remove a track piece. Hold SHIFT to select relation ray
tool.trackassembly.reload.3=Removes a curve interpolation node. Hold SHIFT to clear the stack
@ -34,234 +222,60 @@ tool.trackassembly.reload_use.2=Enable database export to open DSV manager
tool.trackassembly.reload_use.3=Enable database export to open DSV manager
tool.trackassembly.reload_use.4=Enable database export to open DSV manager
tool.trackassembly.reload_use.5=Enable database export to open DSV manager
tool.trackassembly.desc=Assembles a track for the vehicles to run on
tool.trackassembly.name=Track assembly
tool.trackassembly.phytype=Select physical properties type of the ones listed here
tool.trackassembly.phytype_con=Material type\:
tool.trackassembly.phytype_def=<Select Surface Material TYPE>
tool.trackassembly.phyname=Select physical properties name to use when creating the track as this will affect the surface friction
tool.trackassembly.phyname_con=Material name\:
tool.trackassembly.phyname_def=<Select Surface Material NAME>
tool.trackassembly.bgskids=Selection code of comma delimited Bodygroup/Skin ID
tool.trackassembly.bgskids_con=Bodygroup/Skin\:
tool.trackassembly.bgskids_def=Write selection code here. For example 1,0,0,2,1/3
tool.trackassembly.mass=How heavy the piece spawned will be
tool.trackassembly.mass_con=Piece mass\:
tool.trackassembly.model=Select a piece to start/continue your track with by expanding a type and clicking on a node
tool.trackassembly.model_con=Piece model\:
tool.trackassembly.activrad=Minimum distance needed to select an active point
tool.trackassembly.activrad_con=Active radius\:
tool.trackassembly.stackcnt=Maximum number of pieces to create while stacking
tool.trackassembly.stackcnt_con=Pieces count\:
tool.trackassembly.angsnap=Snap the first piece spawned at this much degrees
tool.trackassembly.angsnap_con=Angular alignment\:
tool.trackassembly.resetvars=Click to reset the additional values
tool.trackassembly.resetvars_con=V Reset variables V
tool.trackassembly.nextpic=Additional origin angular pitch offset
tool.trackassembly.nextpic_con=Origin pitch\:
tool.trackassembly.nextyaw=Additional origin angular yaw offset
tool.trackassembly.nextyaw_con=Origin yaw\:
tool.trackassembly.nextrol=Additional origin angular roll offset
tool.trackassembly.nextrol_con=Origin roll\:
tool.trackassembly.nextx=Additional origin linear X offset
tool.trackassembly.nextx_con=Offset X\:
tool.trackassembly.nexty=Additional origin linear Y offset
tool.trackassembly.nexty_con=Offset Y\:
tool.trackassembly.nextz=Additional origin linear Z offset
tool.trackassembly.nextz_con=Offset Z\:
tool.trackassembly.gravity=Controls the gravity on the piece spawned
tool.trackassembly.gravity_con=Apply piece gravity
tool.trackassembly.weld=Creates welds between pieces or pieces/anchor
tool.trackassembly.weld_con=Weld
tool.trackassembly.forcelim=Controls how much force is needed to break the weld
tool.trackassembly.forcelim_con=Force limit\:
tool.trackassembly.ignphysgn=Ignores physics gun grab on the piece spawned/snapped/stacked
tool.trackassembly.ignphysgn_con=Ignore physics gun
tool.trackassembly.nocollide=Creates a no-collide between pieces or pieces/anchor
tool.trackassembly.nocollide_con=NoCollide
tool.trackassembly.nocollidew=Creates a no-collide between pieces and world
tool.trackassembly.nocollidew_con=NoCollide world
tool.trackassembly.freeze=Makes the piece spawn in a frozen state
tool.trackassembly.freeze_con=Freeze piece
tool.trackassembly.igntype=Makes the tool ignore the different piece types on snapping/stacking
tool.trackassembly.igntype_con=Ignore track type
tool.trackassembly.spnflat=The next piece will be spawned/snapped/stacked horizontally
tool.trackassembly.spnflat_con=Spawn horizontally
tool.trackassembly.spawncn=Spawns the piece at the center, else spawns relative to the active point chosen
tool.trackassembly.spawncn_con=Origin from center
tool.trackassembly.surfsnap=Snaps the piece to the surface the player is pointing at
tool.trackassembly.surfsnap_con=Snap to trace surface
tool.trackassembly.appangfst=Apply the angular offsets only on the first piece
tool.trackassembly.appangfst_con=Apply angular on first
tool.trackassembly.applinfst=Apply the linear offsets only on the first piece
tool.trackassembly.applinfst_con=Apply linear on first
tool.trackassembly.adviser=Controls rendering the tool position/angle adviser
tool.trackassembly.adviser_con=Draw adviser
tool.trackassembly.pntasist=Controls rendering the tool snap point assistant
tool.trackassembly.pntasist_con=Draw assistant
tool.trackassembly.ghostcnt=Controls rendering the tool ghosted holder pieces count
tool.trackassembly.ghostcnt_con=Ghosts count\:
tool.trackassembly.ghostblnd=Controls ghosts transparency blend. The lower the value more transperent
tool.trackassembly.ghostblnd_con=Ghosts blend\:
tool.trackassembly.dtmessage=Controls time intervals between context menu server messages
tool.trackassembly.dtmessage_con=Message delta\:
tool.trackassembly.engunsnap=Controls snapping when the piece is dropped by the player physics gun
tool.trackassembly.engunsnap_con=Enable physics gun snap
tool.trackassembly.upspanchor=Enable to update the anchor on every spawn when not snapping
tool.trackassembly.upspanchor_con=Update anchor on spawn
tool.trackassembly.type=Select the track type to use by expanding the folder
tool.trackassembly.type_con=Track type\:
tool.trackassembly.subfolder=Select the track category to use by expanding the folder
tool.trackassembly.subfolder_con=Track category\:
tool.trackassembly.workmode=Change this option to select a different working mode
tool.trackassembly.workmode_con=Work mode\:
tool.trackassembly.pn_export=Click to export the client database as a file
tool.trackassembly.pn_export_lb=Export DB
tool.trackassembly.pn_routine=The list of your frequently used track pieces
tool.trackassembly.pn_routine_hd=Frequent pieces by\:
tool.trackassembly.pn_externdb=The external databases available for\:
tool.trackassembly.pn_externdb_hd=External databases by\:
tool.trackassembly.pn_externdb_lb=Right click for options\:
tool.trackassembly.pn_externdb_ttt=Current modified configuration value\:
tool.trackassembly.pn_externdb_bti=Import
tool.trackassembly.pn_externdb_bti_tp=Imports information from the file list into the panel to edit
tool.trackassembly.pn_externdb_bte=Export
tool.trackassembly.pn_externdb_bte_tp=Exports information from the panel to the file list and apply
tool.trackassembly.pn_externdb_bt1=Copy unique prefix
tool.trackassembly.pn_externdb_bt2=Copy DSV folder path
tool.trackassembly.pn_externdb_bt3=Copy table nick
tool.trackassembly.pn_externdb_bt4=Copy table path
tool.trackassembly.pn_externdb_bt5=Copy table time
tool.trackassembly.pn_externdb_bt6=Copy table size
tool.trackassembly.pn_externdb_bt7=Edit table content (Luapad)
tool.trackassembly.pn_externdb_bt8=Delete database entry
tool.trackassembly.pn_externdb_cm1=Copy cell value
tool.trackassembly.pn_externdb_cm2=Copy whole line
tool.trackassembly.pn_externdb_cm3=Enable/Disable
tool.trackassembly.pn_externdb_cm4=Change line
tool.trackassembly.pn_externdb_cm5=Create line
tool.trackassembly.pn_externdb_cm6=Remove line
tool.trackassembly.pn_ext_dsv_lb=External DSV list
tool.trackassembly.pn_ext_dsv_hd=External DSV databases list is displayed here
tool.trackassembly.pn_ext_dsv_1=Active
tool.trackassembly.pn_ext_dsv_2=Database unique prefix
tool.trackassembly.pn_ext_dsv_3=Additional information
tool.trackassembly.pn_display=The model of your track piece is displayed here
tool.trackassembly.pn_pattern=Write a pattern here and hit ENTER to perform a search
tool.trackassembly.pn_srchcol=Choose which list column you want to perform a search on
tool.trackassembly.pn_srchcol_lb=<Search by>
tool.trackassembly.pn_srchcol_lb1=Model
tool.trackassembly.pn_srchcol_lb2=Type
tool.trackassembly.pn_srchcol_lb3=Name
tool.trackassembly.pn_srchcol_lb4=End
tool.trackassembly.pn_routine_lb=Routine items
tool.trackassembly.pn_routine_lb1=Used
tool.trackassembly.pn_routine_lb2=End
tool.trackassembly.pn_routine_lb3=Type
tool.trackassembly.pn_routine_lb4=Name
tool.trackassembly.pn_display_lb=Piece display
tool.trackassembly.pn_pattern_lb=Write pattern
tool.trackassembly.sizeucs=Scale set for the coordinate systems displayed
tool.trackassembly.sizeucs_con=Scale UCS\:
tool.trackassembly.maxstatts=Defines how many stack attempts the script will try before failing
tool.trackassembly.maxstatts_con=Stack attempts\:
tool.trackassembly.incsnpang=Defines the angular incremental step when button sliders are used
tool.trackassembly.incsnpang_con=Angular step\:
tool.trackassembly.incsnplin=Defines the linear incremental step when button sliders are used
tool.trackassembly.incsnplin_con=Linear step\:
tool.trackassembly.enradmenu=When enabled turns on the usage of the work mode radial menu
tool.trackassembly.enradmenu_con=Enable radial menu
tool.trackassembly.sgradmenu=Change this to make the radial menu more round. The higher the smoother
tool.trackassembly.sgradmenu_con=Radial segments\:
tool.trackassembly.right.1=Copy track piece model or open frequent pieces frame
tool.trackassembly.right.2=Copy track piece model or open frequent pieces frame
tool.trackassembly.right.3=Create node for the segmented curve. Hold SHIFT to update
tool.trackassembly.right.4=Register entity in the flip over list. Hold SHIFT to change model
tool.trackassembly.right.5=Create node for the segmented curve. Hold SHIFT to update
tool.trackassembly.right_use.1=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.right_use.2=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.right_use.3=Generate node from the nearest track piece active point
tool.trackassembly.right_use.4=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.right_use.5=Generate node from the nearest track piece active point
tool.trackassembly.rtradmenu=Change this to adjust the radial menu base angle and relocate its options
tool.trackassembly.rtradmenu_con=Radial rotation\:
tool.trackassembly.enpntmscr=When enabled turns on the switching active points via mouse scroll
tool.trackassembly.enpntmscr_con=Enable point scroll
tool.trackassembly.exportdb=When enabled turns on the database export as one large file
tool.trackassembly.exportdb_con=Enable database export
tool.trackassembly.devmode=When enabled turns on the developer mode for tracking and debugging
tool.trackassembly.devmode_con=Enable developer mode
tool.trackassembly.maxtrmarg=Change this to adjust the time between tool traces
tool.trackassembly.maxtrmarg_con=Trace margin\:
tool.trackassembly.maxspmarg=Change this to adjust the distance margin from the previous spawn
tool.trackassembly.maxspmarg_con=Spawn margin\:
tool.trackassembly.maxmenupr=Change this to adjust the number of the decimal places in the menu
tool.trackassembly.maxmenupr_con=Decimal places\:
tool.trackassembly.maxmass=Change this to adjust the maximum mass that can be applied on a piece
tool.trackassembly.maxmass_con=Mass limit\:
tool.trackassembly.maxlinear=Change this to adjust the maximum linear offset on a piece
tool.trackassembly.maxlinear_con=Offset limit\:
tool.trackassembly.maxforce=Change this to adjust the maximum force limit when creating welds
tool.trackassembly.maxforce_con=Force limit\:
tool.trackassembly.maxactrad=Change this to adjust the maximum active radius for obtaining point ID
tool.trackassembly.maxactrad_con=Radius limit\:
tool.trackassembly.maxstcnt=Change this to adjust the maximum pieces to be created in stacking mode
tool.trackassembly.maxstcnt_con=Stack limit\:
tool.trackassembly.maxghcnt=Change this to adjust the maximum pieces to be ghosted in stacking mode
tool.trackassembly.maxghcnt_con=Ghosts limit\:
tool.trackassembly.enwiremod=When enabled turns on the wiremod expression chip extension
tool.trackassembly.enwiremod_con=Enable wire expression
tool.trackassembly.enmultask=When enabled turns on the multitasking during stacking mode
tool.trackassembly.enmultask_con=Enable multitasking
tool.trackassembly.enctxmenu=When enabled turns on the tool dedicated context menu for pieces
tool.trackassembly.enctxmenu_con=Enable context menu
tool.trackassembly.enctxmall=When enabled turns on the tool dedicated context menu for all props
tool.trackassembly.enctxmall_con=Enable context menu for all props
tool.trackassembly.endsvlock=When enabled turns on the external pluggable DSV databases file lock
tool.trackassembly.endsvlock_con=Enable DSV database lock
tool.trackassembly.curvefact=Change this to adjust the curving factor tangent coefficient
tool.trackassembly.curvefact_con=Curve factor\:
tool.trackassembly.curvsmple=Change this to adjust the curving interpolation samples
tool.trackassembly.curvsmple_con=Curve samples\:
tool.trackassembly.crvturnlm=Change this to adjust the turn curving sharpness limit for the segment
tool.trackassembly.crvturnlm_con=Curvature turn\:
tool.trackassembly.crvleanlm=Change this to adjust the lean curving sharpness limit for the segment
tool.trackassembly.crvleanlm_con=Curvature lean\:
tool.trackassembly.sgradmenu=Change this to make the radial menu more round. The higher the smoother
tool.trackassembly.sgradmenu_con=Radial segments\:
tool.trackassembly.sizeucs=Scale set for the coordinate systems displayed
tool.trackassembly.sizeucs_con=Scale UCS\:
tool.trackassembly.spawncn=Spawns the piece at the center, else spawns relative to the active point chosen
tool.trackassembly.spawncn_con=Origin from center
tool.trackassembly.spawnrate=Change this to adjust the amount of track segments spawned per server tick
tool.trackassembly.spawnrate_con=Spawning rate\:
tool.trackassembly.bnderrmod=Change this to define the behavior when clients are spawning pieces outside of map bounds
tool.trackassembly.bnderrmod_off=Allow stack/spawn without restriction
tool.trackassembly.bnderrmod_log=Deny stack/spawn the error is logged
tool.trackassembly.bnderrmod_hint=Deny stack/spawn hint message is displayed
tool.trackassembly.bnderrmod_generic=Deny stack/spawn generic message is displayed
tool.trackassembly.bnderrmod_error=Deny stack/spawn error message is displayed
tool.trackassembly.bnderrmod_con=Bounding mode\:
tool.trackassembly.modedb=Change this to define the storage behavior of the track database
tool.trackassembly.modedb_lua=Utilize direct cache storage
tool.trackassembly.modedb_sql=Cache requested records only
tool.trackassembly.modedb_con=Database mode\:
tool.trackassembly.maxfruse=Change this to adjust the depth of how many frequently used pieces are there
tool.trackassembly.maxfruse_con=Frequent pieces\:
tool.trackassembly.spnflat=The next piece will be spawned/snapped/stacked horizontally
tool.trackassembly.spnflat_con=Spawn horizontally
tool.trackassembly.stackcnt=Maximum number of pieces to create while stacking
tool.trackassembly.stackcnt_con=Pieces count\:
tool.trackassembly.subfolder=Select the track category to use by expanding the folder
tool.trackassembly.subfolder_con=Track category\:
tool.trackassembly.surfsnap=Snaps the piece to the surface the player is pointing at
tool.trackassembly.surfsnap_con=Snap to trace surface
tool.trackassembly.timermode_ap=Click this to apply your changes to the SQL memory manager configuration
tool.trackassembly.timermode_ap_con=Apply memory settings
tool.trackassembly.timermode_md=Change this to adjust the timer algorithm of the SQL memory manager
tool.trackassembly.timermode_lf=Change this to adjust the amount of time the record spends in the cache
tool.trackassembly.timermode_lf_con=Record life\:
tool.trackassembly.timermode_rd=When enabled wipes the record from the cache by forcing a nil value
tool.trackassembly.timermode_rd_con=Enable record deletion
tool.trackassembly.timermode_cqt=Cache query timer via record request
tool.trackassembly.timermode_ct=When enabled forces the garbage collection to run on record deletion
tool.trackassembly.timermode_ct_con=Enable garbage collection
tool.trackassembly.timermode_lf=Change this to adjust the amount of time the record spends in the cache
tool.trackassembly.timermode_lf_con=Record life\:
tool.trackassembly.timermode_md=Change this to adjust the timer algorithm of the SQL memory manager
tool.trackassembly.timermode_mem=Memory manager for SQL table\:
tool.trackassembly.timermode_cqt=Cache query timer via record request
tool.trackassembly.timermode_obj=Object timer attached to cache record
tool.trackassembly.factory_reset=Click this to apply console variables factory settings
tool.trackassembly.factory_reset_con=Apply factory settings
tool.trackassembly.logfile=When enabled starts streaming the log into dedicated file
tool.trackassembly.logfile_con=Enable logging file
tool.trackassembly.logsmax=Change this to adjust the log streaming maximum output lines written
tool.trackassembly.logsmax_con=Logging lines\:
tool.trackassembly.client_var=Client side player preferences. Convars created in the tool client configuration
tool.trackassembly.nonrep_var=Non-replicated convar controls. They have different values on server and client
tool.trackassembly.relica_var=Replicated convar controls. The server value is sent to all clients to use
tool.trackassembly.utilities_user=User settings setup
tool.trackassembly.timermode_rd=When enabled wipes the record from the cache by forcing a nil value
tool.trackassembly.timermode_rd_con=Enable record deletion
tool.trackassembly.type=Select the track type to use by expanding the folder
tool.trackassembly.type_con=Track type\:
tool.trackassembly.upspanchor=Enable to update the anchor on every spawn when not snapping
tool.trackassembly.upspanchor_con=Update anchor on spawn
tool.trackassembly.utilities_admin=Admin settings setup
tool.trackassembly.buttonas<>=Decrement/Increment
tool.trackassembly.buttonas+/-=Negate value
tool.trackassembly.buttonas@M=Memorize value
tool.trackassembly.buttonas@D=Default value
tool.trackassembly.buttonas@=Apply value\:
sbox_maxasmtracks=Change this to adjust the things spawned via track assembly tool on the server
sbox_maxasmtracks_con=Total segments\:
Cleanup_asmtracks=Assembled track pieces
Cleaned_asmtracks=Cleaned up all track pieces
SBoxLimit_asmtracks=You've hit the spawned tracks limit!
tool.trackassembly.utilities_user=User settings setup
tool.trackassembly.weld=Creates welds between pieces or pieces/anchor
tool.trackassembly.weld_con=Weld
tool.trackassembly.workmode.1=General spawn/snap pieces
tool.trackassembly.workmode.2=Active point intersection
tool.trackassembly.workmode.3=Curve line segment fitting
tool.trackassembly.workmode.4=Surface normal flip over
tool.trackassembly.workmode.5=Tangent transition turns
tool.trackassembly.workmode=Change this option to select a different working mode
tool.trackassembly.workmode_con=Work mode\:

View File

@ -1,27 +1,217 @@

tool.trackassembly.workmode.1=Général créer/aligner des pièces
tool.trackassembly.workmode.2=Point d'intersection actif
tool.trackassembly.workmode.3=Ajuster des segments de ligne courbés
tool.trackassembly.workmode.4=Retourner la normale d'une surface
Cleaned_asmtracks=Pistes nettoyées
Cleanup_asmtracks=Pièces de piste assemblées
SBoxLimit_asmtracks=Vous avez atteint la limite des pistes créées!
sbox_maxasmtracks=Changer ceci pour ajuster les choses créées par l'outil assembleur à piste sur le serveur
sbox_maxasmtracks_con=Quantité de rails\:
tool.trackassembly.activrad=Distance minimum nécessaire pour sélectionner un point actif
tool.trackassembly.activrad_con=Rayon actif\:
tool.trackassembly.adviser=Montrer le conseiller de position/angle de l'outil
tool.trackassembly.adviser_con=Montrer le conseiller
tool.trackassembly.angsnap=Aligner la première pièce créée sur ce degré
tool.trackassembly.angsnap_con=Alignement angulaire\:
tool.trackassembly.appangfst=Appliquer les décalages angulaires seulement sur la première pièce
tool.trackassembly.appangfst_con=Appliquer angulaire en premier
tool.trackassembly.applinfst=Appliquer les décalages linéaires seulement sur la première pièce
tool.trackassembly.applinfst_con=Appliquer linéaire en premier
tool.trackassembly.bgskids=Cette ensemble de code est delimité par une virgule pour chaque Groupes de corps/ID Apparence
tool.trackassembly.bgskids_con=Groupes de corps/Apparence\:
tool.trackassembly.bgskids_def=Écrivez le code de sélection ici. Par exemple 1,0,0,2,1/3
tool.trackassembly.bnderrmod=Changer ceci pour définir le comportement quand les clients créent des pièces en dehors des limites de la carte
tool.trackassembly.bnderrmod_con=Sécurité frontière\:
tool.trackassembly.bnderrmod_error=[5] Refuser l'empilement/création message d'erreur est affiché
tool.trackassembly.bnderrmod_generic=[4] Refuser l'empilement/création message générique est affiché
tool.trackassembly.bnderrmod_hint=[3] Refuser l'empilement/création message d'astuce est affiché
tool.trackassembly.bnderrmod_log=[2] Refuser l'empilement/création l'erreur est enregistré
tool.trackassembly.bnderrmod_off=[1] Autoriser l'empilement/création sans restriction
tool.trackassembly.buttonas+/-=Nier la valeur
tool.trackassembly.buttonas<>=Diminuer/Augmenter
tool.trackassembly.buttonas@=Appliquer la valeur\:
tool.trackassembly.buttonas@D=Valeur par défaut
tool.trackassembly.buttonas@M=Mémoriser la valeur
tool.trackassembly.client_var=Préférences utilisateur côté client. Convars créées dans la configuration client de l'outil
tool.trackassembly.crvleanlm=Changer ceci pour ajuster la finesse de la courbure en inclinaison pour le segment
tool.trackassembly.crvleanlm_con=Courbure en inclinaison\:
tool.trackassembly.crvsuprev=Modifiez ceci pour ajuster l'amplitude du dévers utilisé dans les virages
tool.trackassembly.crvsuprev_con=Dévers\:
tool.trackassembly.crvturnlm=Changer ceci pour ajuster la finesse de la courbure en virage pour le segment
tool.trackassembly.crvturnlm_con=Courbure en virage\:
tool.trackassembly.curvefact=Changer ceci pour ajuster le facteur courbe du coefficient tangent
tool.trackassembly.curvefact_con=Facteur courbe\:
tool.trackassembly.curvsmple=Changer ceci pour ajuster les échantillons pour la courbe d'interpolation
tool.trackassembly.curvsmple_con=Échantillons courbe\:
tool.trackassembly.desc=Assemble une piste auquel les véhicules peuvent rouler dessus
tool.trackassembly.devmode=Active le traçage et débogage
tool.trackassembly.devmode_con=Activer le mode développeur
tool.trackassembly.dtmessage=Contrôle les intervalles de temps entre les messages du serveur du menu contextuel
tool.trackassembly.dtmessage_con=Delta du message\:
tool.trackassembly.enctxmall=Active le menu contextuel de l'outil dédiée pour tous les objets
tool.trackassembly.enctxmall_con=Activer le menu contextuel pour tous les objets
tool.trackassembly.enctxmenu=Active le menu contextuel de l'outil dédiée pour les pièces
tool.trackassembly.enctxmenu_con=Activer le menu contextuel
tool.trackassembly.endsvlock=Active le verrouillage du fichier de la base de données DSV externe
tool.trackassembly.endsvlock_con=Activer le verrou de la base de données DSV
tool.trackassembly.engunsnap=Contrôle l'alignement quand la pièce est tombée par le pistolet physique d'un joueur
tool.trackassembly.engunsnap_con=Activer l'alignement par pistolet physique
tool.trackassembly.enmultask=Active le multitâche pendant le mode d'empilement
tool.trackassembly.enmultask_con=Activer le système multitâche
tool.trackassembly.enpntmscr=Permet de basculer entre les points actifs par défilement de la molette
tool.trackassembly.enpntmscr_con=Activer le défilement de points
tool.trackassembly.enradmenu=Permet l'utilisation du menu radial du mode de travail
tool.trackassembly.enradmenu_con=Activer le menu radial
tool.trackassembly.enwiremod=Active l'extension pour la puce d'expression Wiremod
tool.trackassembly.enwiremod_con=Activer wire expression
tool.trackassembly.exportdb=Active l'exportation de la base de données en un grand fichier
tool.trackassembly.exportdb_con=Activer l'exportation de la base de données
tool.trackassembly.factory_reset=Cliquez ici pour appliquer les paramètres d'usine des variables de la console
tool.trackassembly.factory_reset_con=Appliquer les paramètres d'usine
tool.trackassembly.forcelim=Force nécessaire pour casser la soudure
tool.trackassembly.forcelim_con=Limite de force\:
tool.trackassembly.freeze=La pièce qui sera créée sera dans un état gelé
tool.trackassembly.freeze_con=Geler la pièce
tool.trackassembly.ghostblnd=Contrôle la transparence des fantômes. Plus la valeur est basse, plus ils sont transparents
tool.trackassembly.ghostblnd_con=Transparence des fantômes\:
tool.trackassembly.ghostcnt=Montrer un aperçu de la pièces compter active
tool.trackassembly.ghostcnt_con=Activer compter l'aperçu de l'outil
tool.trackassembly.gravity=Contrôle la gravité sur la pièce créée
tool.trackassembly.gravity_con=Appliquer la gravité sur la pièce
tool.trackassembly.ignphysgn=Ignore la saisie du pistolet physiques sur la pièce créée/alignée/empilé
tool.trackassembly.ignphysgn_con=Ignorer le pistolet physiques
tool.trackassembly.igntype=Faire ignorer à l'outil les différents types de pièce dès l'alignement/empilement
tool.trackassembly.igntype_con=Ignorer le type de piste
tool.trackassembly.incsnpang=Défini le pas d'incrémentation angulaire
tool.trackassembly.incsnpang_con=Pas angulaire\:
tool.trackassembly.incsnplin=Défini le pas d'incrémentation linéaire
tool.trackassembly.incsnplin_con=Pas linéaire\:
tool.trackassembly.info.1=Créer des pièces sur la carte ou les aligner relativement entre elles
tool.trackassembly.info.2=Connecte les sections de piste avec un segment spécialement dédié pour cela
tool.trackassembly.info.3=Forme une piste continue passant par les points de passage définis
tool.trackassembly.info.4=Retourne les entités sélectionnées de la liste à travers les origines et normales définis
tool.trackassembly.info.5=Crée des transitions plus fluides dans les virages où le rayon change dans les courbes
tool.trackassembly.left.1=Créer/Aligner une pièce de piste. Maintenir MAJUSCULE pour empiler
tool.trackassembly.left.2=Créer une pièce de piste au point d'intersection
tool.trackassembly.left.3=Créer la piste segmentée par interpolation de courbe
tool.trackassembly.left.4=Créer les pistes retournées de la liste sélectionnée
tool.trackassembly.left.5=Créer la piste segmentée par interpolation de courbe
tool.trackassembly.right.1=Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right.2=Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right.3=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser
tool.trackassembly.right.4=Enregistrer l'entité dans la liste à retourner. Maintenir MAJUSCULE pour changer le modèle
tool.trackassembly.right.5=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser
tool.trackassembly.right_use.1=MOLETTE désactivée. Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right_use.2=MOLETTE désactivée. Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right_use.3=Générer un nœud depuis le point actif de la pièce de piste la plus proche
tool.trackassembly.right_use.4=MOLETTE désactivée. Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right_use.5=Générer un nœud depuis le point actif de la pièce de piste la plus proche
tool.trackassembly.logfile=Commence la diffusion du journal dans un fichier dédié
tool.trackassembly.logfile_con=Activer le journal
tool.trackassembly.logsmax=Changer ceci pour ajuster le flux maximum des lignes écrites par le journal
tool.trackassembly.logsmax_con=Lignes maximum\:
tool.trackassembly.mass=À quel point la pièce créée sera lourd
tool.trackassembly.mass_con=Masse de la pièce\:
tool.trackassembly.maxactrad=Changer ceci pour ajuster le rayon actif maximal pour obtenir l'ID d'un point
tool.trackassembly.maxactrad_con=Limite du rayon\:
tool.trackassembly.maxforce=Changer ceci pour ajuster la limite maximale de la force lors des soudures
tool.trackassembly.maxforce_con=Limite de force\:
tool.trackassembly.maxfruse=Changer ceci pour ajuster combien de pièces peuvent apparaître dans la fenêtre des pièces fréquentes
tool.trackassembly.maxfruse_con=Pièces fréquentes\:
tool.trackassembly.maxghcnt=Modifiez ceci pour ajuster le nombre maximal de pièces en mode empilage
tool.trackassembly.maxghcnt_con=Limite des fantômes\:
tool.trackassembly.maxlinear=Changer ceci pour ajuster le décalage linéaire maximal sur une pièce
tool.trackassembly.maxlinear_con=Limite du décalage\:
tool.trackassembly.maxmass=Changer ceci pour ajuster la masse maximale pouvant être appliquée sur une pièce
tool.trackassembly.maxmass_con=Limite de la masse\:
tool.trackassembly.maxmenupr=Changer ceci pour ajuster le nombre de chiffres après la virgule dans le menu
tool.trackassembly.maxmenupr_con=Séparateur décimal\:
tool.trackassembly.maxspmarg=Modifiez ceci pour ajuster la marge de distance par rapport à la génération précédente
tool.trackassembly.maxspmarg_con=Marge de génération\:
tool.trackassembly.maxstatts=Défini combien de tentatives d'empilement le script va essayer avant d'échouer
tool.trackassembly.maxstatts_con=Tentatives d'empilement\:
tool.trackassembly.maxstcnt=Changer ceci pour ajuster le maximum de pièces pouvant être créées en mode empilement
tool.trackassembly.maxstcnt_con=Limite d'empilement\:
tool.trackassembly.maxtrmarg=Changer ceci pour ajuster le temps entre les tracées de l'outil
tool.trackassembly.maxtrmarg_con=Marge de la tracée\:
tool.trackassembly.modedb=Modifiez ceci pour définir le comportement de stockage de la base de données de pistes
tool.trackassembly.modedb_con=Mode base de données\:
tool.trackassembly.modedb_lua=Utiliser le stockage cache direct
tool.trackassembly.modedb_sql=Cache uniquement les enregistrements demandés
tool.trackassembly.model=Sélectionnez une pièce pour commencer/continuer votre piste avec en étendant un type et en cliquant sur un nœud
tool.trackassembly.model_con=Modèle de la pièce\:
tool.trackassembly.name=Assembleur à piste
tool.trackassembly.nextpic=Décalage angulaire supplémentaire sur la position initial du tangage
tool.trackassembly.nextpic_con=Angle du tangage\:
tool.trackassembly.nextrol=Décalage angulaire supplementaire sur la position initial du roulis
tool.trackassembly.nextrol_con=Angle du roulis\:
tool.trackassembly.nextx=Décalage linéaire supplémentaire sur la position initial de X
tool.trackassembly.nextx_con=Décalage en X\:
tool.trackassembly.nexty=Décalage linéaire supplémentaire sur la position initial de Y
tool.trackassembly.nexty_con=Décalage en Y\:
tool.trackassembly.nextyaw=Décalage angulaire supplémentaire sur la position initial du lacet
tool.trackassembly.nextyaw_con=Angle du lacet\:
tool.trackassembly.nextz=Décalage linéaire supplémentaire sur la position initial de Z
tool.trackassembly.nextz_con=Décalage en Z\:
tool.trackassembly.nocollide=Faire en sorte que les pièces/ancres ne puissent jamais entrer en collision
tool.trackassembly.nocollide_con=Pas de collisions
tool.trackassembly.nocollidew=Faire en sorte que les pièces/monde ne puisse jamais entrer en collision
tool.trackassembly.nocollidew_con=Pas de collisions avec le monde
tool.trackassembly.nonrep_var=Contrôles de convar non répliqués. Ils ont des valeurs différentes sur le serveur et le client
tool.trackassembly.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
tool.trackassembly.phyname_con=Nom de matériau de surface\:
tool.trackassembly.phyname_def=<Sélectionner un NOM de matériau de surface>
tool.trackassembly.phytype=Sélectionnez une des propriétés physiques dans la liste
tool.trackassembly.phytype_con=Type de matériau\:
tool.trackassembly.phytype_def=<Sélectionner un TYPE de matériau de surface>
tool.trackassembly.pn_contextm_cp=Copier
tool.trackassembly.pn_contextm_cpbx=Boîte
tool.trackassembly.pn_contextm_cpmd=Modèle
tool.trackassembly.pn_contextm_cpnm=Nom
tool.trackassembly.pn_contextm_cprw=Ligne
tool.trackassembly.pn_contextm_cpth=Chemin
tool.trackassembly.pn_contextm_cpty=Type
tool.trackassembly.pn_contextm_ep=Développer le nœud
tool.trackassembly.pn_contextm_ex=Exporter
tool.trackassembly.pn_contextm_exdv=Externe
tool.trackassembly.pn_contextm_exru=Exécution automatique
tool.trackassembly.pn_contextm_li=Ligne
tool.trackassembly.pn_contextm_licg=Changer
tool.trackassembly.pn_contextm_licr=Créer
tool.trackassembly.pn_contextm_lirm=Supprimer
tool.trackassembly.pn_contextm_mv=Déplacer
tool.trackassembly.pn_contextm_mvbt=Bas
tool.trackassembly.pn_contextm_mvdn=Descendre
tool.trackassembly.pn_contextm_mvtp=Haut
tool.trackassembly.pn_contextm_mvup=Monter
tool.trackassembly.pn_contextm_st=Tableaux
tool.trackassembly.pn_contextm_stdl=Supprimer des fichiers
tool.trackassembly.pn_contextm_sted=Modifier des fichiers (Luapad)
tool.trackassembly.pn_contextm_stnk=Copier le nom
tool.trackassembly.pn_contextm_stpt=Copier le chemin
tool.trackassembly.pn_contextm_stsz=Copier la taille
tool.trackassembly.pn_contextm_sttm=Copier l'heuree
tool.trackassembly.pn_contextm_tg=Basculer
tool.trackassembly.pn_contextm_ws=Workshop
tool.trackassembly.pn_contextm_wsid=Copier WID
tool.trackassembly.pn_contextm_wsop=Ouvrir la page
tool.trackassembly.pn_display=Le modèle de votre pièce de piste est affiché ici
tool.trackassembly.pn_display_lb=Affichage pièce
tool.trackassembly.pn_export=Cliquer pour exporter la base de données client dans un fichier
tool.trackassembly.pn_export_lb=Exporter BD
tool.trackassembly.pn_extdsv_act=Active
tool.trackassembly.pn_extdsv_hd=La liste des base de données DSV sont affichées ici
tool.trackassembly.pn_extdsv_inf=Informations supplémentaires
tool.trackassembly.pn_extdsv_lb=Liste DSV externe
tool.trackassembly.pn_extdsv_prf=Préfixe unique de la base de donnée
tool.trackassembly.pn_externdb_bte=Exporter
tool.trackassembly.pn_externdb_bte_tp=Exporte les informations du panneau vers la liste de fichiers et applique
tool.trackassembly.pn_externdb_bti=Importer
tool.trackassembly.pn_externdb_bti_tp=Importe les informations de la liste de fichiers dans le panneau pour édition
tool.trackassembly.pn_externdb_hd=Base de données de\:
tool.trackassembly.pn_externdb_ttt=Valeur de configuration actuelle modifiée\:
tool.trackassembly.pn_pattern=Écrire un modèle ici et appuyer sur ENTRÉE pour effectuer une recherche
tool.trackassembly.pn_pattern_lb=Écrire modèle
tool.trackassembly.pn_routine=La liste de vos pièces de pistes utilisées fréquemment
tool.trackassembly.pn_routine_end=Fin
tool.trackassembly.pn_routine_hd=Pièces fréquents par\:
tool.trackassembly.pn_routine_lb=Articles de routine
tool.trackassembly.pn_routine_mod=Modèle
tool.trackassembly.pn_routine_nam=Nom
tool.trackassembly.pn_routine_typ=Type
tool.trackassembly.pn_routine_use=Utilisé
tool.trackassembly.pn_srchcol=Choisir la liste de colonne auquel vous voulez effectuer une recherche sur
tool.trackassembly.pn_srchcol_lb=<Recherche>
tool.trackassembly.pntasist=Montrer l'assistant d'alignement de l'outil
tool.trackassembly.pntasist_con=Montrer l'assistant
tool.trackassembly.relica_var=Contrôles de convar répliqués. La valeur du serveur est envoyée à tous les clients
tool.trackassembly.reload.1=Retirer une pièce de piste. Maintenir MAJUSCULE pour sélectionner une ancre
tool.trackassembly.reload.2=Retirer une pièce de piste. Maintenir MAJUSCULE pour sélectionner le rayon de sélection
tool.trackassembly.reload.3=Retire un nœud de l'interpolation de courbe. Maintenir MAJUSCULE pour vider le tas
@ -32,192 +222,60 @@ tool.trackassembly.reload_use.2=Activer l'exportation de la base de données pou
tool.trackassembly.reload_use.3=Activer l'exportation de la base de données pour ouvrir le gestionnaire DSV
tool.trackassembly.reload_use.4=Activer l'exportation de la base de données pour ouvrir le gestionnaire DSV
tool.trackassembly.reload_use.5=Activer l'exportation de la base de données pour ouvrir le gestionnaire DSV
tool.trackassembly.desc=Assemble une piste auquel les véhicules peuvent rouler dessus
tool.trackassembly.name=Assembleur à piste
tool.trackassembly.phytype=Sélectionnez une des propriétés physiques dans la liste
tool.trackassembly.phytype_con=Type de matériau\:
tool.trackassembly.phytype_def=<Sélectionner un TYPE de matériau de surface>
tool.trackassembly.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
tool.trackassembly.phyname_con=Nom de matériau de surface\:
tool.trackassembly.phyname_def=<Sélectionner un NOM de matériau de surface>
tool.trackassembly.bgskids=Cette ensemble de code est delimité par une virgule pour chaque Groupes de corps/ID Apparence
tool.trackassembly.bgskids_con=Groupes de corps/Apparence\:
tool.trackassembly.bgskids_def=Écrivez le code de sélection ici. Par exemple 1,0,0,2,1/3
tool.trackassembly.mass=À quel point la pièce créée sera lourd
tool.trackassembly.mass_con=Masse de la pièce\:
tool.trackassembly.model=Sélectionnez une pièce pour commencer/continuer votre piste avec en étendant un type et en cliquant sur un nœud
tool.trackassembly.model_con=Modèle de la pièce\:
tool.trackassembly.activrad=Distance minimum nécessaire pour sélectionner un point actif
tool.trackassembly.activrad_con=Rayon actif\:
tool.trackassembly.stackcnt=Nombre maximum de pièces à créer pendant l'empilement
tool.trackassembly.stackcnt_con=Nombre de pièces\:
tool.trackassembly.angsnap=Aligner la première pièce créée sur ce degré
tool.trackassembly.angsnap_con=Alignement angulaire\:
tool.trackassembly.resetvars=Cliquez pour réinitialiser les valeurs supplémentaires
tool.trackassembly.resetvars_con=V Réinitialiser les variables V
tool.trackassembly.nextpic=Décalage angulaire supplémentaire sur la position initial du tangage
tool.trackassembly.nextpic_con=Angle du tangage\:
tool.trackassembly.nextyaw=Décalage angulaire supplémentaire sur la position initial du lacet
tool.trackassembly.nextyaw_con=Angle du lacet\:
tool.trackassembly.nextrol=Décalage angulaire supplementaire sur la position initial du roulis
tool.trackassembly.nextrol_con=Angle du roulis\:
tool.trackassembly.nextx=Décalage linéaire supplémentaire sur la position initial de X
tool.trackassembly.nextx_con=Décalage en X\:
tool.trackassembly.nexty=Décalage linéaire supplémentaire sur la position initial de Y
tool.trackassembly.nexty_con=Décalage en Y\:
tool.trackassembly.nextz=Décalage linéaire supplémentaire sur la position initial de Z
tool.trackassembly.nextz_con=Décalage en Z\:
tool.trackassembly.gravity=Contrôle la gravité sur la pièce créée
tool.trackassembly.gravity_con=Appliquer la gravité sur la pièce
tool.trackassembly.weld=Créer une soudure entre les pièces/ancres
tool.trackassembly.weld_con=Souder
tool.trackassembly.forcelim=Force nécessaire pour casser la soudure
tool.trackassembly.forcelim_con=Limite de force\:
tool.trackassembly.ignphysgn=Ignore la saisie du pistolet physiques sur la pièce créée/alignée/empilé
tool.trackassembly.ignphysgn_con=Ignorer le pistolet physiques
tool.trackassembly.nocollide=Faire en sorte que les pièces/ancres ne puissent jamais entrer en collision
tool.trackassembly.nocollide_con=Pas de collisions
tool.trackassembly.nocollidew=Faire en sorte que les pièces/monde ne puisse jamais entrer en collision
tool.trackassembly.nocollidew_con=Pas de collisions avec le monde
tool.trackassembly.freeze=La pièce qui sera créée sera dans un état gelé
tool.trackassembly.freeze_con=Geler la pièce
tool.trackassembly.igntype=Faire ignorer à l'outil les différents types de pièce dès l'alignement/empilement
tool.trackassembly.igntype_con=Ignorer le type de piste
tool.trackassembly.spnflat=La prochaine pièce sera créée/alignée/empilé horizontalement
tool.trackassembly.spnflat_con=Créer horizontalement
tool.trackassembly.spawncn=Créer la pièce vers le centre, sinon, la créer relativement vers le point active choisi
tool.trackassembly.spawncn_con=Partir du centre
tool.trackassembly.surfsnap=Aligne la pièce vers la surface auquel le joueur vise actuellement
tool.trackassembly.surfsnap_con=Aligner vers la surface tracé
tool.trackassembly.appangfst=Appliquer les décalages angulaires seulement sur la première pièce
tool.trackassembly.appangfst_con=Appliquer angulaire en premier
tool.trackassembly.applinfst=Appliquer les décalages linéaires seulement sur la première pièce
tool.trackassembly.applinfst_con=Appliquer linéaire en premier
tool.trackassembly.adviser=Montrer le conseiller de position/angle de l'outil
tool.trackassembly.adviser_con=Montrer le conseiller
tool.trackassembly.pntasist=Montrer l'assistant d'alignement de l'outil
tool.trackassembly.pntasist_con=Montrer l'assistant
tool.trackassembly.ghostcnt=Montrer un aperçu de la pièces compter active
tool.trackassembly.ghostcnt_con=Activer compter l'aperçu de l'outil
tool.trackassembly.engunsnap=Contrôle l'alignement quand la pièce est tombée par le pistolet physique d'un joueur
tool.trackassembly.engunsnap_con=Activer l'alignement par pistolet physique
tool.trackassembly.type=Sélectionnez le type de piste à utiliser en développant le dossier
tool.trackassembly.type_con=Type de piste\:
tool.trackassembly.subfolder=Sélectionnez la catégorie de piste à utiliser en développant le dossier
tool.trackassembly.subfolder_con=Catégorie de piste\:
tool.trackassembly.workmode=Modifiez cette option pour utiliser différents modes de travail
tool.trackassembly.workmode_con=Mode de travail\:
tool.trackassembly.pn_export=Cliquer pour exporter la base de données client dans un fichier
tool.trackassembly.pn_export_lb=Exporter BD
tool.trackassembly.pn_routine=La liste de vos pièces de pistes utilisées fréquemment
tool.trackassembly.pn_routine_hd=Pièces fréquents par\:
tool.trackassembly.pn_externdb=Les base de données disponibles pour\:
tool.trackassembly.pn_externdb_hd=Base de données de\:
tool.trackassembly.pn_externdb_lb=Clic droit pour les options\:
tool.trackassembly.pn_externdb_bt1=Copier préfixe unique
tool.trackassembly.pn_externdb_bt2=Copier chemin dossier DSV
tool.trackassembly.pn_externdb_bt3=Copier le nom de la table
tool.trackassembly.pn_externdb_bt4=Copier le chemin de la table
tool.trackassembly.pn_externdb_bt5=Copier l'heure de la table
tool.trackassembly.pn_externdb_bt6=Copier la taille de la table
tool.trackassembly.pn_externdb_bt7=Modifier le contenu de la table (Luapad)
tool.trackassembly.pn_externdb_bt8=Supprimer l'entrée de la base de donnée
tool.trackassembly.pn_ext_dsv_lb=Liste DSV externe
tool.trackassembly.pn_ext_dsv_hd=La liste des base de données DSV sont affichées ici
tool.trackassembly.pn_ext_dsv_1=Active
tool.trackassembly.pn_ext_dsv_2=Préfixe unique de la base de donnée
tool.trackassembly.pn_display=Le modèle de votre pièce de piste est affiché ici
tool.trackassembly.pn_pattern=Écrire un modèle ici et appuyer sur ENTRÉE pour effectuer une recherche
tool.trackassembly.pn_srchcol=Choisir la liste de colonne auquel vous voulez effectuer une recherche sur
tool.trackassembly.pn_srchcol_lb=<Recherche>
tool.trackassembly.pn_srchcol_lb1=Modèle
tool.trackassembly.pn_srchcol_lb2=Type
tool.trackassembly.pn_srchcol_lb3=Nom
tool.trackassembly.pn_srchcol_lb4=Fin
tool.trackassembly.pn_routine_lb=Articles de routine
tool.trackassembly.pn_routine_lb1=Utilisé
tool.trackassembly.pn_routine_lb2=Fin
tool.trackassembly.pn_routine_lb3=Type
tool.trackassembly.pn_routine_lb4=Nom
tool.trackassembly.pn_display_lb=Affichage pièce
tool.trackassembly.pn_pattern_lb=Écrire modèle
tool.trackassembly.right.1=Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right.2=Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right.3=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser
tool.trackassembly.right.4=Enregistrer l'entité dans la liste à retourner. Maintenir MAJUSCULE pour changer le modèle
tool.trackassembly.right.5=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser
tool.trackassembly.right_use.1=MOLETTE désactivée. Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right_use.2=MOLETTE désactivée. Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right_use.3=Générer un nœud depuis le point actif de la pièce de piste la plus proche
tool.trackassembly.right_use.4=MOLETTE désactivée. Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.right_use.5=Générer un nœud depuis le point actif de la pièce de piste la plus proche
tool.trackassembly.rtradmenu=Modifiez ceci pour ajuster l'angle de base du menu radial et repositionner ses options
tool.trackassembly.rtradmenu_con=Rotation radiale\:
tool.trackassembly.sgradmenu=Modifiez ceci pour rendre le menu radial plus arrondi. Plus la valeur est élevée, plus c'est lisse
tool.trackassembly.sgradmenu_con=Segments radiaux\:
tool.trackassembly.sizeucs=Calibration de l'échelle pour le système de coordonnées affiché
tool.trackassembly.sizeucs_con=Échelle UCS\:
tool.trackassembly.maxstatts=Défini combien de tentatives d'empilement le script va essayer avant d'échouer
tool.trackassembly.maxstatts_con=Tentatives d'empilement\:
tool.trackassembly.incsnpang=Défini le pas d'incrémentation angulaire
tool.trackassembly.incsnpang_con=Pas angulaire\:
tool.trackassembly.incsnplin=Défini le pas d'incrémentation linéaire
tool.trackassembly.incsnplin_con=Pas linéaire\:
tool.trackassembly.enradmenu=Permet l'utilisation du menu radial du mode de travail
tool.trackassembly.enradmenu_con=Activer le menu radial
tool.trackassembly.enpntmscr=Permet de basculer entre les points actifs par défilement de la molette
tool.trackassembly.enpntmscr_con=Activer le défilement de points
tool.trackassembly.exportdb=Active l'exportation de la base de données en un grand fichier
tool.trackassembly.exportdb_con=Activer l'exportation de la base de données
tool.trackassembly.devmode=Active le traçage et débogage
tool.trackassembly.devmode_con=Activer le mode développeur
tool.trackassembly.maxtrmarg=Changer ceci pour ajuster le temps entre les tracées de l'outil
tool.trackassembly.maxtrmarg_con=Marge de la tracée\:
tool.trackassembly.maxmenupr=Changer ceci pour ajuster le nombre de chiffres après la virgule dans le menu
tool.trackassembly.maxmenupr_con=Séparateur décimal\:
tool.trackassembly.maxmass=Changer ceci pour ajuster la masse maximale pouvant être appliquée sur une pièce
tool.trackassembly.maxmass_con=Limite de la masse\:
tool.trackassembly.maxlinear=Changer ceci pour ajuster le décalage linéaire maximal sur une pièce
tool.trackassembly.maxlinear_con=Limite du décalage\:
tool.trackassembly.maxforce=Changer ceci pour ajuster la limite maximale de la force lors des soudures
tool.trackassembly.maxforce_con=Limite de force\:
tool.trackassembly.maxactrad=Changer ceci pour ajuster le rayon actif maximal pour obtenir l'ID d'un point
tool.trackassembly.maxactrad_con=Limite du rayon\:
tool.trackassembly.maxstcnt=Changer ceci pour ajuster le maximum de pièces pouvant être créées en mode empilement
tool.trackassembly.maxstcnt_con=Limite d'empilement\:
tool.trackassembly.enwiremod=Active l'extension pour la puce d'expression Wiremod
tool.trackassembly.enwiremod_con=Activer wire expression
tool.trackassembly.enmultask=Active le multitâche pendant le mode d'empilement
tool.trackassembly.enmultask_con=Activer le système multitâche
tool.trackassembly.enctxmenu=Active le menu contextuel de l'outil dédiée pour les pièces
tool.trackassembly.enctxmenu_con=Activer le menu contextuel
tool.trackassembly.enctxmall=Active le menu contextuel de l'outil dédiée pour tous les objets
tool.trackassembly.enctxmall_con=Activer le menu contextuel pour tous les objets
tool.trackassembly.endsvlock=Active le verrouillage du fichier de la base de données DSV externe
tool.trackassembly.endsvlock_con=Activer le verrou de la base de données DSV
tool.trackassembly.curvefact=Changer ceci pour ajuster le facteur courbe du coefficient tangent
tool.trackassembly.curvefact_con=Facteur courbe\:
tool.trackassembly.curvsmple=Changer ceci pour ajuster les échantillons pour la courbe d'interpolation
tool.trackassembly.curvsmple_con=Échantillons courbe\:
tool.trackassembly.crvturnlm=Changer ceci pour ajuster la finesse de la courbure en virage pour le segment
tool.trackassembly.crvturnlm_con=Courbure en virage\:
tool.trackassembly.crvleanlm=Changer ceci pour ajuster la finesse de la courbure en inclinaison pour le segment
tool.trackassembly.crvleanlm_con=Courbure en inclinaison\:
tool.trackassembly.spawncn=Créer la pièce vers le centre, sinon, la créer relativement vers le point active choisi
tool.trackassembly.spawncn_con=Partir du centre
tool.trackassembly.spawnrate=Changer ceci pour ajuster la quantité de segments de pistes créés par cycle de serveur
tool.trackassembly.spawnrate_con=Quantité création\:
tool.trackassembly.bnderrmod=Changer ceci pour définir le comportement quand les clients créent des pièces en dehors des limites de la carte
tool.trackassembly.bnderrmod_off=[1] Autoriser l'empilement/création sans restriction
tool.trackassembly.bnderrmod_log=[2] Refuser l'empilement/création l'erreur est enregistré
tool.trackassembly.bnderrmod_hint=[3] Refuser l'empilement/création message d'astuce est affiché
tool.trackassembly.bnderrmod_generic=[4] Refuser l'empilement/création message générique est affiché
tool.trackassembly.bnderrmod_error=[5] Refuser l'empilement/création message d'erreur est affiché
tool.trackassembly.bnderrmod_con=Sécurité frontière\:
tool.trackassembly.maxfruse=Changer ceci pour ajuster combien de pièces peuvent apparaître dans la fenêtre des pièces fréquentes
tool.trackassembly.maxfruse_con=Pièces fréquentes\:
tool.trackassembly.spnflat=La prochaine pièce sera créée/alignée/empilé horizontalement
tool.trackassembly.spnflat_con=Créer horizontalement
tool.trackassembly.stackcnt=Nombre maximum de pièces à créer pendant l'empilement
tool.trackassembly.stackcnt_con=Nombre de pièces\:
tool.trackassembly.subfolder=Sélectionnez la catégorie de piste à utiliser en développant le dossier
tool.trackassembly.subfolder_con=Catégorie de piste\:
tool.trackassembly.surfsnap=Aligne la pièce vers la surface auquel le joueur vise actuellement
tool.trackassembly.surfsnap_con=Aligner vers la surface tracé
tool.trackassembly.timermode_ap=Cliquer ici pour appliquer vos changements au gestionnaire de mémoire SQL
tool.trackassembly.timermode_ap_con=Appliquer les paramètres de la mémoire
tool.trackassembly.timermode_md=Changer ceci pour ajuster l'algorithme de la minuterie du gestionnaire de mémoire SQL
tool.trackassembly.timermode_lf=Changer ceci pour ajuster pendant combien de temps une entrée reste dans le cache
tool.trackassembly.timermode_lf_con=Durée de vie\:
tool.trackassembly.timermode_rd=Efface les entrées du cache en forçant une valeur nulle
tool.trackassembly.timermode_rd_con=Activer la suppression des entrées
tool.trackassembly.timermode_cqt=Mettre en cache la minuterie de la requête via l'enregistrement de la requête
tool.trackassembly.timermode_ct=Force l'exécution du recyclage de la mémoire lorsqu'une entrée est supprimée
tool.trackassembly.timermode_ct_con=Activer le ramasse-miettes
tool.trackassembly.timermode_lf=Changer ceci pour ajuster pendant combien de temps une entrée reste dans le cache
tool.trackassembly.timermode_lf_con=Durée de vie\:
tool.trackassembly.timermode_md=Changer ceci pour ajuster l'algorithme de la minuterie du gestionnaire de mémoire SQL
tool.trackassembly.timermode_mem=Gestionnaire de mémoire de la table SQL\:
tool.trackassembly.timermode_cqt=Mettre en cache la minuterie de la requête via l'enregistrement de la requête
tool.trackassembly.timermode_obj=Minuterie objet attachée à l'enregistrement du cache
tool.trackassembly.logfile=Commence la diffusion du journal dans un fichier dédié
tool.trackassembly.logfile_con=Activer le journal
tool.trackassembly.logsmax=Changer ceci pour ajuster le flux maximum des lignes écrites par le journal
tool.trackassembly.logsmax_con=Lignes maximum\:
sbox_maxasmtracks=Changer ceci pour ajuster les choses créées par l'outil assembleur à piste sur le serveur
sbox_maxasmtracks_con=Quantité de rails\:
Cleanup_asmtracks=Pièces de piste assemblées
Cleaned_asmtracks=Pistes nettoyées
SBoxLimit_asmtracks=Vous avez atteint la limite des pistes créées!
tool.trackassembly.timermode_rd=Efface les entrées du cache en forçant une valeur nulle
tool.trackassembly.timermode_rd_con=Activer la suppression des entrées
tool.trackassembly.type=Sélectionnez le type de piste à utiliser en développant le dossier
tool.trackassembly.type_con=Type de piste\:
tool.trackassembly.upspanchor=Activer pour mettre à jour l'ancrage à chaque apparition sans ajustement
tool.trackassembly.upspanchor_con=Mettre à jour l'ancrage à l'apparition
tool.trackassembly.utilities_admin=Configuration des paramètres administrateur
tool.trackassembly.utilities_user=Configuration des paramètres utilisateur
tool.trackassembly.weld=Créer une soudure entre les pièces/ancres
tool.trackassembly.weld_con=Souder
tool.trackassembly.workmode.1=Général créer/aligner des pièces
tool.trackassembly.workmode.2=Point d'intersection actif
tool.trackassembly.workmode.3=Ajuster des segments de ligne courbés
tool.trackassembly.workmode.4=Retourner la normale d'une surface
tool.trackassembly.workmode.5=Transitions tangentielles dans les virages
tool.trackassembly.workmode=Modifiez cette option pour utiliser différents modes de travail
tool.trackassembly.workmode_con=Mode de travail\:

View File

@ -1,115 +1,109 @@

tool.trackassembly.workmode.1=通常部分のスポーン/スナップ
tool.trackassembly.workmode.2=アクティブポイントの交差点
tool.trackassembly.workmode.3=曲線線分フィッティング
tool.trackassembly.desc=乗り物が走る線路を組み立てる
tool.trackassembly.name=線路の組み立て
tool.trackassembly.phytype=一覧済みしたものの物性タイプを選択して
tool.trackassembly.phytype_def=<表面物質タイプを選択して>
tool.trackassembly.phyname=線路を作る時物性ネームを選択すると表面フリクションに効果が出る
tool.trackassembly.phyname_con=表面材料名\:
tool.trackassembly.phyname_def=<表面物質ネームを選択して>
Cleaned_asmtracks=線路部分全部綺麗にした
Cleanup_asmtracks=組み立てた線路部分
SBoxLimit_asmtracks=スポーンした線路の限定
tool.trackassembly.activrad=アクティブポイントを選ぶの最小限距離
tool.trackassembly.activrad_con=アクティブ半径\:
tool.trackassembly.adviser=ツールのレンダリング拠点/角度アドバイザーを管理する
tool.trackassembly.adviser_con=ドローアドバイザー
tool.trackassembly.angsnap=この程度で最初の部分をスナップして
tool.trackassembly.angsnap_con=鋭角的な路線\:
tool.trackassembly.appangfst=最初部分のみに鋭角的なオフセットを付けて
tool.trackassembly.appangfst_con=最初のに鋭角的のを付けて
tool.trackassembly.applinfst=最初部分のみに点直線的なオフセットを付けて
tool.trackassembly.applinfst_con=最初のに点直線のを付けて
tool.trackassembly.bgskids=コンマ区切りボディーグループ/スキンIDのセレクションコード。
tool.trackassembly.bgskids_con=ボディーグループ/スキン\:
tool.trackassembly.bgskids_def=ここにセレクションコードを登録して。模範1,0,0,2,1/3
tool.trackassembly.desc=乗り物が走る線路を組み立てる
tool.trackassembly.engunsnap=プレイヤー物理銃が落とした部分のスナップを管理する
tool.trackassembly.engunsnap_con=物理銃スナップを可能にする
tool.trackassembly.forcelim=溶接打点を壊す必要な力を管理する
tool.trackassembly.forcelim_con=力の限定\:
tool.trackassembly.freeze=動かぬ状態で部分をスポーンする
tool.trackassembly.freeze_con=それは移動しません
tool.trackassembly.ghostcnt=ツールのレンダリングゴーステッドホルダー部分数を管理する
tool.trackassembly.ghostcnt_con=ドローホルダーゴースト
tool.trackassembly.gravity=スポーンした部分の重力を管理する
tool.trackassembly.gravity_con=部分重力を付ける
tool.trackassembly.ignphysgn=スポーンした/スナップした/スタックした部分の物理銃掴むを無視する
tool.trackassembly.ignphysgn_con=物理銃を無視する
tool.trackassembly.igntype=ツールをスナップする/スタックする時部分の種類を無視させる
tool.trackassembly.igntype_con=線路部分タイプを無視して
tool.trackassembly.mass=スポーンする部分の重さ
tool.trackassembly.mass_con=部分の質量\:
tool.trackassembly.model=タイプを拡張してとノードをクリックしてで線路を始まる/続けるために部分を選んで
tool.trackassembly.model_con=部分のモデル\:
tool.trackassembly.activrad=アクティブポイントを選ぶの最小限距離
tool.trackassembly.activrad_con=アクティブ半径\:
tool.trackassembly.stackcnt=スタックする場合線路部分の最大量
tool.trackassembly.stackcnt_con=部分の数\:
tool.trackassembly.angsnap=この程度で最初の部分をスナップして
tool.trackassembly.angsnap_con=鋭角的な路線\:
tool.trackassembly.resetvars=追加的な数値をリセットためにクリックして
tool.trackassembly.resetvars_con=V 変数リセット V
tool.trackassembly.name=線路の組み立て
tool.trackassembly.nextpic=追加的原点鋭角的なピッチオフセット
tool.trackassembly.nextpic_con=原点ピッチ\:
tool.trackassembly.nextyaw=追加的原点鋭角的なヨーオフセット
tool.trackassembly.nextyaw_con=原点ヨー\:
tool.trackassembly.nextrol=追加的原点鋭角的なロールオフセット
tool.trackassembly.nextrol_con=原点ロール\:
tool.trackassembly.nextx=追加的原点直線的なXオフセット
tool.trackassembly.nextx_con=Xオフセット\:
tool.trackassembly.nexty=追加的原点直線的なYオフセット
tool.trackassembly.nexty_con=Yオフセット\:
tool.trackassembly.nextyaw=追加的原点鋭角的なヨーオフセット
tool.trackassembly.nextyaw_con=原点ヨー\:
tool.trackassembly.nextz=追加的原点直線的なZオフセット
tool.trackassembly.nextz_con=Zオフセット\:
tool.trackassembly.gravity=スポーンした部分の重力を管理する
tool.trackassembly.gravity_con=部分重力を付ける
tool.trackassembly.weld=二つの部分と部分とアンカーの間に溶接打点を作る
tool.trackassembly.weld_con=溶接
tool.trackassembly.forcelim=溶接打点を壊す必要な力を管理する
tool.trackassembly.forcelim_con=力の限定\:
tool.trackassembly.ignphysgn=スポーンした/スナップした/スタックした部分の物理銃掴むを無視する
tool.trackassembly.ignphysgn_con=物理銃を無視する
tool.trackassembly.nocollide=部分と部分とアンカーの間に「突き当たる禁止」を入れる
tool.trackassembly.nocollide_con=突き当たる禁止
tool.trackassembly.nocollidew=部分と世界ーの間に「突き当たる禁止」を入れる
tool.trackassembly.nocollidew_con=な衝突世界突き当たる禁止
tool.trackassembly.freeze=動かぬ状態で部分をスポーンする
tool.trackassembly.freeze_con=それは移動しません
tool.trackassembly.igntype=ツールをスナップする/スタックする時部分の種類を無視させる
tool.trackassembly.igntype_con=線路部分タイプを無視して
tool.trackassembly.spnflat=次の部分が横にスポーン/スナップ/スタック
tool.trackassembly.spnflat_con=横にスポーンして
tool.trackassembly.spawncn=真ん中で部分をスポーンして、他のは選んだアクティブポイントに身寄でスポーンする
tool.trackassembly.spawncn_con=真ん中から原点
tool.trackassembly.surfsnap=プレイヤーに指した表面で部分をスナップして
tool.trackassembly.surfsnap_con=トレース表面でスナップして
tool.trackassembly.appangfst=最初部分のみに鋭角的なオフセットを付けて
tool.trackassembly.appangfst_con=最初のに鋭角的のを付けて
tool.trackassembly.applinfst=最初部分のみに点直線的なオフセットを付けて
tool.trackassembly.applinfst_con=最初のに点直線のを付けて
tool.trackassembly.adviser=ツールのレンダリング拠点/角度アドバイザーを管理する
tool.trackassembly.adviser_con=ドローアドバイザー
tool.trackassembly.pntasist=ツールのレンダリングスナップポイントアシスタントを管理する
tool.trackassembly.pntasist_con=ドローアシスタント
tool.trackassembly.ghostcnt=ツールのレンダリングゴーステッドホルダー部分数を管理する
tool.trackassembly.ghostcnt_con=ドローホルダーゴースト
tool.trackassembly.engunsnap=プレイヤー物理銃が落とした部分のスナップを管理する
tool.trackassembly.engunsnap_con=物理銃スナップを可能にする
tool.trackassembly.type=フォルダを展開して、使用するトラックタイプを選択します
tool.trackassembly.type_con=トラックタイプ\:
tool.trackassembly.subfolder=フォルダを展開して、使用するトラックカテゴリを選択します
tool.trackassembly.subfolder_con=トラックカテゴリ\:
tool.trackassembly.workmode=稼働モード変更の設定
tool.trackassembly.workmode_con=稼働モ\:
tool.trackassembly.phyname=線路を作る時物性ネームを選択すると表面フリクションに効果が出る
tool.trackassembly.phyname_con=表面材料名\:
tool.trackassembly.phyname_def=<表面物質ネームを選択して>
tool.trackassembly.phytype=一覧済みしたものの物性タイプを選択して
tool.trackassembly.phytype_def=<表面物質タイプを選択して>
tool.trackassembly.pn_contextm_st=Tables
tool.trackassembly.pn_contextm_stdl=データベースエントリを消して
tool.trackassembly.pn_contextm_sted=アイテムを編集して(Luapad)
tool.trackassembly.pn_contextm_stnk=テーブルニックネームをコピーして
tool.trackassembly.pn_contextm_stpt=テーブルパスをコピーして
tool.trackassembly.pn_contextm_stsz=テーブルサイズをコピーして
tool.trackassembly.pn_contextm_sttm=テーブルタイムをコピーして
tool.trackassembly.pn_display=プレーやの線路部分ここに映る
tool.trackassembly.pn_display_lb=部分を映る
tool.trackassembly.pn_export=クリックでクライアントデータベースをファイルにエクスポート
tool.trackassembly.pn_export_lb=DB エクスポート
tool.trackassembly.pn_routine=よく使った線路部分表
tool.trackassembly.pn_routine_hd=よく使った部分\:
tool.trackassembly.pn_externdb=使用可能外部データベース\:
tool.trackassembly.pn_extdsv_act=アクティブ
tool.trackassembly.pn_extdsv_hd=外部DSVデータベースリストはここに見せる
tool.trackassembly.pn_extdsv_lb=外部DSVリスト
tool.trackassembly.pn_extdsv_prf=データベース特異プレッフィクス
tool.trackassembly.pn_externdb_hd=外部データベース\:
tool.trackassembly.pn_externdb_lb=右クリックでオプション\:
tool.trackassembly.pn_externdb_bt1=特異プレフィックスをコピーして
tool.trackassembly.pn_externdb_bt2=DSVフォルダーをコピーして
tool.trackassembly.pn_externdb_bt3=テーブルニックネームをコピーして
tool.trackassembly.pn_externdb_bt4=テーブルパスをコピーして
tool.trackassembly.pn_externdb_bt5=テーブルタイムをコピーして
tool.trackassembly.pn_externdb_bt6=テーブルサイズをコピーして
tool.trackassembly.pn_externdb_bt7=アイテムを編集して(Luapad)
tool.trackassembly.pn_externdb_bt8=データベースエントリを消して
tool.trackassembly.pn_ext_dsv_lb=外部DSVリスト
tool.trackassembly.pn_ext_dsv_hd=外部DSVデータベースリストはここに見せる
tool.trackassembly.pn_ext_dsv_1=アクティブ
tool.trackassembly.pn_ext_dsv_2=データベース特異プレッフィクス
tool.trackassembly.pn_display=プレーやの線路部分ここに映る
tool.trackassembly.pn_pattern=ここにパターンを書くとサーチするためにENTERを押して
tool.trackassembly.pn_pattern_lb=パターンを書く
tool.trackassembly.pn_routine=よく使った線路部分表
tool.trackassembly.pn_routine_end=
tool.trackassembly.pn_routine_hd=よく使った部分\:
tool.trackassembly.pn_routine_lb=定番アイテム
tool.trackassembly.pn_routine_mod=モデル
tool.trackassembly.pn_routine_nam=ネーム
tool.trackassembly.pn_routine_typ=タイプ
tool.trackassembly.pn_routine_use=期限
tool.trackassembly.pn_srchcol=サーチするコラムを選択し
tool.trackassembly.pn_srchcol_lb=<でサーチ>
tool.trackassembly.pn_srchcol_lb1=モデル
tool.trackassembly.pn_srchcol_lb2=タイプ
tool.trackassembly.pn_srchcol_lb3=ネーム
tool.trackassembly.pn_srchcol_lb4=
tool.trackassembly.pn_routine_lb=定番アイテム
tool.trackassembly.pn_routine_lb1=期限
tool.trackassembly.pn_routine_lb2=
tool.trackassembly.pn_routine_lb3=タイプ
tool.trackassembly.pn_routine_lb4=ネーム
tool.trackassembly.pn_display_lb=部分を映る
tool.trackassembly.pn_pattern_lb=パターンを書く
Cleanup_asmtracks=組み立てた線路部分
Cleaned_asmtracks=線路部分全部綺麗にした
SBoxLimit_asmtracks=スポーンした線路の限定
tool.trackassembly.pntasist=ツールのレンダリングスナップポイントアシスタントを管理する
tool.trackassembly.pntasist_con=ドローアシスタント
tool.trackassembly.resetvars=追加的な数値をリセットためにクリックして
tool.trackassembly.resetvars_con=V 変数リセット V
tool.trackassembly.spawncn=真ん中で部分をスポーンして、他のは選んだアクティブポイントに身寄でスポーンする
tool.trackassembly.spawncn_con=真ん中から原点
tool.trackassembly.spnflat=次の部分が横にスポーン/スナップ/スタック
tool.trackassembly.spnflat_con=横にスポーンして
tool.trackassembly.stackcnt=スタックする場合線路部分の最大量
tool.trackassembly.stackcnt_con=部分の数\:
tool.trackassembly.subfolder=フォルダを展開して、使用するトラックカテゴリを選択します
tool.trackassembly.subfolder_con=トラックカテゴリ\:
tool.trackassembly.surfsnap=プレイヤーに指した表面で部分をスナップして
tool.trackassembly.surfsnap_con=トレース表面でスナップして
tool.trackassembly.type=フォルダを展開して、使用するトラックタイプを選択します
tool.trackassembly.type_con=トラックタイプ\:
tool.trackassembly.weld=二つの部分と部分とアンカーの間に溶接打点を作る
tool.trackassembly.weld_con=溶接
tool.trackassembly.workmode.1=通常部分のスポーン/スナップ
tool.trackassembly.workmode.2=アクティブポイントの交差点
tool.trackassembly.workmode.3=曲線線分フィッティング
tool.trackassembly.workmode=稼働モード変更の設定
tool.trackassembly.workmode_con=稼働モ\:

View File

@ -1,125 +1,281 @@

tool.trackassembly.workmode.1=Общее создание/прилепание куски
tool.trackassembly.workmode.2=Пересечение активной точки
tool.trackassembly.workmode.3=Кривой отрезок линии фитинг
tool.trackassembly.workmode.4=Нормаль поверхности перевернуть
tool.trackassembly.desc=Создает дорогу для транспортных средств
tool.trackassembly.name=Сборка дороги
tool.trackassembly.phytype=Выберите тип физических свойств из тех которые перечислены здесь
tool.trackassembly.phytype_con=Тип поверхности\:
tool.trackassembly.phytype_def=<Выберите ТИП поверхности>
tool.trackassembly.phyname=Выберите имя физических свойств которые могут быть использованы при создании дороги так как это повлияет на поверхностное трение
tool.trackassembly.phyname_con=Имя поверхности\:
tool.trackassembly.phyname_def=<Выберите ИМЯ поверхности>
Cleaned_asmtracks=Все куски дороги очищены
Cleanup_asmtracks=Собранные куски дороги
SBoxLimit_asmtracks=Вы достигли предела созданных кусков дороги!
sbox_maxasmtracks=Измените это, чтобы настроить объекты, создаваемые с помощью инструмента сборки треков на сервере
sbox_maxasmtracks_con=Всего сегментов\:
tool.trackassembly.activrad=Минимальное расстояние чтобы выбрать активную точку
tool.trackassembly.activrad_con=Активный радиус\:
tool.trackassembly.adviser=Управляет отображением позиционного/углового советника
tool.trackassembly.adviser_con=Нарисовать советник
tool.trackassembly.angsnap=Приклейте первый кусок созданный тем положением градусов
tool.trackassembly.angsnap_con=Угловое выравнивание\:
tool.trackassembly.appangfst=Применять угловое смещение только на первой кусок
tool.trackassembly.appangfst_con=Применять угловое на первой
tool.trackassembly.applinfst=Применять линейное смещение только на первой кусок
tool.trackassembly.applinfst_con=Применять линейное на первой
tool.trackassembly.bgskids=Код выбора через запятую для Группа-тела/Кожа ID
tool.trackassembly.bgskids_con=Группа-тела/Кожа\:
tool.trackassembly.bgskids_def=Написать код выбора здесь. Например 1,0,0,2,1/3
tool.trackassembly.bnderrmod=Измените это, чтобы определить поведение при попытке клиентов создавать объекты за пределами карты
tool.trackassembly.bnderrmod_con=Режим границ\:
tool.trackassembly.bnderrmod_error=Запрет на стек/создание, отображается сообщение об ошибке
tool.trackassembly.bnderrmod_generic=Запрет на стек/создание, отображается общее сообщение
tool.trackassembly.bnderrmod_hint=Запрет на стек/создание, отображается подсказка
tool.trackassembly.bnderrmod_log=Запрет на стек/создание, ошибка логируется
tool.trackassembly.bnderrmod_off=Разрешить стек/создание без ограничений
tool.trackassembly.buttonas+/-=Начение по умолчаниюз
tool.trackassembly.buttonas<>=Уменьшить/Увеличить
tool.trackassembly.buttonas@=Применять стоимость\:
tool.trackassembly.buttonas@D=Значение по умолчанию
tool.trackassembly.buttonas@M=Запомнить стоимость
tool.trackassembly.client_var=Настройки клиента. Консольные переменные создаются в конфигурации инструмента клиента
tool.trackassembly.crvleanlm=Измените это, чтобы настроить ограничение резкости при изгибе сегмента
tool.trackassembly.crvleanlm_con=Наклон кривизны\:
tool.trackassembly.crvsuprev=Измените это, чтобы настроить величину поперечного наклона, используемого в поворотах
tool.trackassembly.crvsuprev_con=Поперечный наклон\:
tool.trackassembly.crvturnlm=Измените это, чтобы настроить ограничение резкости при повороте сегмента
tool.trackassembly.crvturnlm_con=Поворот кривизны\:
tool.trackassembly.curvefact=Измените это, чтобы настроить коэффициент касательной кривизны
tool.trackassembly.curvefact_con=Коэффициент кривизны\:
tool.trackassembly.curvsmple=Измените это, чтобы настроить количество интерполяционных образцов кривизны
tool.trackassembly.curvsmple_con=Образцы кривизны\:
tool.trackassembly.desc=Создает дорогу для транспортных средств
tool.trackassembly.devmode=Включает режим разработчика для отслеживания и отладки
tool.trackassembly.devmode_con=Включить режим разработчика
tool.trackassembly.dtmessage=Управляет интервалами времени между серверными сообщениями в контекстном меню
tool.trackassembly.dtmessage_con=Интервал сообщений\:
tool.trackassembly.enctxmall=Включает контекстное меню инструмента для всех объектов
tool.trackassembly.enctxmall_con=Включить контекстное меню для всех объектов
tool.trackassembly.enctxmenu=Включает контекстное меню инструмента для элементов
tool.trackassembly.enctxmenu_con=Включить контекстное меню
tool.trackassembly.endsvlock=Включает блокировку внешней базы данных DSV
tool.trackassembly.endsvlock_con=Включить блокировку базы данных DSV
tool.trackassembly.engunsnap=Управляет приклеивание когда кусок выпущен физической пушки пользователя
tool.trackassembly.engunsnap_con=Приклеивать выпуском
tool.trackassembly.enmultask=Включает многозадачность в режиме стекового создания
tool.trackassembly.enmultask_con=Включить многозадачность
tool.trackassembly.enpntmscr=Включает переключение активных точек с помощью прокрутки мыши
tool.trackassembly.enpntmscr_con=Включить прокрутку точек
tool.trackassembly.enradmenu=Включает радиальное меню для режима работы
tool.trackassembly.enradmenu_con=Включить радиальное меню
tool.trackassembly.enwiremod=Включает расширение Wiremod для чипа выражений
tool.trackassembly.enwiremod_con=Включить Wiremod
tool.trackassembly.exportdb=Включает экспорт базы данных в один большой файл
tool.trackassembly.exportdb_con=Включить экспорт базы данных
tool.trackassembly.factory_reset=Нажмите, чтобы применить настройки консольных переменных по умолчанию
tool.trackassembly.factory_reset_con=Сброс настроек
tool.trackassembly.forcelim=Управляет сколько сил требуется чтобы сломать сварной шов
tool.trackassembly.forcelim_con=Ограничение силы\:
tool.trackassembly.freeze=Создает заморожений кусок
tool.trackassembly.freeze_con=Заморозить кусок
tool.trackassembly.ghostblnd=Управляет прозрачностью призрачных объектов. Чем ниже значение, тем более прозрачные
tool.trackassembly.ghostblnd_con=Прозрачность призраков\:
tool.trackassembly.ghostcnt=Управляет подсчет отображением куска-тени
tool.trackassembly.ghostcnt_con=Нарисовать подсчет кусок-тень
tool.trackassembly.gravity=Управляет гравитацию куска
tool.trackassembly.gravity_con=Применить силу тяжести к куске
tool.trackassembly.ignphysgn=Игнорирует захвата физической пушки при созданием/приклеиванием/нагромождением куска
tool.trackassembly.ignphysgn_con=Игнорирует захвата физической пушки
tool.trackassembly.igntype=Игнорирует различные типы кусков прилипания/накопления
tool.trackassembly.igntype_con=Игнорировать тип кусков
tool.trackassembly.incsnpang=Определяет угловой инкрементный шаг при использовании ползунков
tool.trackassembly.incsnpang_con=Угловой шаг\:
tool.trackassembly.incsnplin=Определяет линейный инкрементный шаг при использовании ползунков
tool.trackassembly.incsnplin_con=Линейный шаг\:
tool.trackassembly.info.1=Создает части трека на карте или прикрепляет их друг к другу
tool.trackassembly.info.2=Соединяет секции трека с помощью специальных сегментов
tool.trackassembly.info.3=Создает непрерывные трассы, проходящие через заданные контрольные точки
tool.trackassembly.info.4=Переворачивает выбранные объекты относительно указанного происхождения и нормали
tool.trackassembly.info.5=Создает плавные повороты, где радиус изменяется при изгибе
tool.trackassembly.left.1=Создать/прикрепить часть трека. Удерживайте SHIFT для стекового создания
tool.trackassembly.left.2=Создать часть трека в точке пересечения
tool.trackassembly.left.3=Создать сегментированную интерполяционную кривую трека
tool.trackassembly.left.4=Создать перевернутый список выбранных треков
tool.trackassembly.left.5=Создать сегментированную интерполяционную кривую трека
tool.trackassembly.logfile=Включает запись журнала в отдельный файл
tool.trackassembly.logfile_con=Включить логирование в файл
tool.trackassembly.logsmax=Измените это, чтобы настроить максимальное количество записей в журнале
tool.trackassembly.logsmax_con=Логирование строк\:
tool.trackassembly.mass=Как тяжелый кусок создал будет
tool.trackassembly.mass_con=Масса куска\:
tool.trackassembly.maxactrad=Измените это, чтобы настроить максимальный радиус для получения ID точки
tool.trackassembly.maxactrad_con=Ограничение радиуса\:
tool.trackassembly.maxforce=Измените это, чтобы настроить максимальную силу при создании соединений
tool.trackassembly.maxforce_con=Ограничение силы\:
tool.trackassembly.maxfruse=Измените это, чтобы настроить глубину для часто используемых объектов
tool.trackassembly.maxfruse_con=Часто используемые объекты\:
tool.trackassembly.maxghcnt=Измените это, чтобы настроить максимальное количество объектов для создания призраков в режиме стека
tool.trackassembly.maxghcnt_con=Ограничение призраков\:
tool.trackassembly.maxlinear=Измените это, чтобы настроить максимальное линейное смещение на объекте
tool.trackassembly.maxlinear_con=Ограничение смещения\:
tool.trackassembly.maxmass=Измените это, чтобы настроить максимальную массу, которую можно применить к объекту
tool.trackassembly.maxmass_con=Ограничение массы\:
tool.trackassembly.maxmenupr=Измените это, чтобы настроить количество десятичных знаков в меню
tool.trackassembly.maxmenupr_con=Десятичные знаки\:
tool.trackassembly.maxspmarg=Измените это, чтобы настроить расстояние от предыдущего создания
tool.trackassembly.maxspmarg_con=Маржа создания\:
tool.trackassembly.maxstatts=Определяет, сколько попыток стека скрипт попробует, прежде чем прекратит
tool.trackassembly.maxstatts_con=Попытки стека\:
tool.trackassembly.maxstcnt=Измените это, чтобы настроить максимальное количество объектов в режиме стека
tool.trackassembly.maxstcnt_con=Ограничение стека\:
tool.trackassembly.maxtrmarg=Измените это, чтобы настроить время между трассировками инструмента
tool.trackassembly.maxtrmarg_con=Маржа трассировки\:
tool.trackassembly.modedb=Измените это, чтобы настроить поведение хранения базы данных треков
tool.trackassembly.modedb_con=Режим базы данных\:
tool.trackassembly.modedb_lua=Использовать прямое кеширование
tool.trackassembly.modedb_sql=Кешировать только запрашиваемые записи
tool.trackassembly.model=Выберите кусок чтобы начать/продолжить свою дорогу выбирая тип дерева и нажав на листе
tool.trackassembly.model_con=Модель куска\:
tool.trackassembly.activrad=Минимальное расстояние чтобы выбрать активную точку
tool.trackassembly.activrad_con=Активный радиус\:
tool.trackassembly.stackcnt=Максимальное количество куски для нагромождения
tool.trackassembly.stackcnt_con=Количество кусков\:
tool.trackassembly.angsnap=Приклейте первый кусок созданный тем положением градусов
tool.trackassembly.angsnap_con=Угловое выравнивание\:
tool.trackassembly.resetvars=Нажмите чтобы сбросить дополнительные значения
tool.trackassembly.resetvars_con=V Сбросить переменные V
tool.trackassembly.name=Сборка дороги
tool.trackassembly.nextpic=Дополнительный сдвиг начала тангажом
tool.trackassembly.nextpic_con=Начало тангажа\:
tool.trackassembly.nextyaw=Дополнительный сдвиг начала рысканием
tool.trackassembly.nextyaw_con=Начало рыскания\:
tool.trackassembly.nextrol=Дополнительный сдвиг начала рулона
tool.trackassembly.nextrol_con=Начало рулона\:
tool.trackassembly.nextx=Дополнительное линейное смещение X
tool.trackassembly.nextx_con=Смещения X\:
tool.trackassembly.nexty=Дополнительное линейное смещение Y
tool.trackassembly.nexty_con=Смещения Y\:
tool.trackassembly.nextyaw=Дополнительный сдвиг начала рысканием
tool.trackassembly.nextyaw_con=Начало рыскания\:
tool.trackassembly.nextz=Дополнительное линейное смещение Z
tool.trackassembly.nextz_con=Смещения Z\:
tool.trackassembly.gravity=Управляет гравитацию куска
tool.trackassembly.gravity_con=Применить силу тяжести к куске
tool.trackassembly.weld=Создает сварные швы между кусками или кусоком/якорем
tool.trackassembly.weld_con=Сварной шов
tool.trackassembly.forcelim=Управляет сколько сил требуется чтобы сломать сварной шов
tool.trackassembly.forcelim_con=Ограничение силы\:
tool.trackassembly.ignphysgn=Игнорирует захвата физической пушки при созданием/приклеиванием/нагромождением куска
tool.trackassembly.ignphysgn_con=Игнорирует захвата физической пушки
tool.trackassembly.nocollide=Делает не-столкновение между кусками или кусоком/якорем
tool.trackassembly.nocollide_con=Не-столкновение
tool.trackassembly.nocollidew=Делает не-столкновение между кусками и миром
tool.trackassembly.nocollidew_con=Не-столкновение миром
tool.trackassembly.freeze=Создает заморожений кусок
tool.trackassembly.freeze_con=Заморозить кусок
tool.trackassembly.igntype=Игнорирует различные типы кусков прилипания/накопления
tool.trackassembly.igntype_con=Игнорировать тип кусков
tool.trackassembly.spnflat=Следующий кусок будет создан/приклеен/накоплен по горизонтали
tool.trackassembly.spnflat_con=Нагромождать по горизонтали
tool.trackassembly.spawncn=Создание куска в центре иначе в выбранной активной точке
tool.trackassembly.spawncn_con=Происхождение из центра
tool.trackassembly.surfsnap=Приклеить кусок к поверхности к которой ссылается пользователь
tool.trackassembly.surfsnap_con=Приклеивать к поверхности
tool.trackassembly.appangfst=Применять угловое смещение только на первой кусок
tool.trackassembly.appangfst_con=Применять угловое на первой
tool.trackassembly.applinfst=Применять линейное смещение только на первой кусок
tool.trackassembly.applinfst_con=Применять линейное на первой
tool.trackassembly.adviser=Управляет отображением позиционного/углового советника
tool.trackassembly.adviser_con=Нарисовать советник
tool.trackassembly.pntasist=Управляет изображение помощника для прилипания
tool.trackassembly.pntasist_con=Нарисовать помощника
tool.trackassembly.ghostcnt=Управляет подсчет отображением куска-тени
tool.trackassembly.ghostcnt_con=Нарисовать подсчет кусок-тень
tool.trackassembly.engunsnap=Управляет приклеивание когда кусок выпущен физической пушки пользователя
tool.trackassembly.engunsnap_con=Приклеивать выпуском
tool.trackassembly.upspanchor=Включите якорь обновить для каждый раз когда создаете без накопления
tool.trackassembly.upspanchor_con=Обновить якорь при создаване
tool.trackassembly.type=Выберите типа дороги для использования путем расширения папки
tool.trackassembly.type_con=Тип дороги\:
tool.trackassembly.subfolder=Выберите категорию дороги для использования путем расширения папки
tool.trackassembly.subfolder_con=Категория дороги\:
tool.trackassembly.workmode=Измените эту опцию чтобы использовать другой рабочий режим
tool.trackassembly.workmode_con=Рабочий режим\:
tool.trackassembly.nonrep_var=Не реплицируемые консольные переменные. Они имеют разные значения на сервере и клиенте
tool.trackassembly.phyname=Выберите имя физических свойств которые могут быть использованы при создании дороги так как это повлияет на поверхностное трение
tool.trackassembly.phyname_con=Имя поверхности\:
tool.trackassembly.phyname_def=<Выберите ИМЯ поверхности>
tool.trackassembly.phytype=Выберите тип физических свойств из тех которые перечислены здесь
tool.trackassembly.phytype_con=Тип поверхности\:
tool.trackassembly.phytype_def=<Выберите ТИП поверхности>
tool.trackassembly.pn_contextm_cp=Копировать
tool.trackassembly.pn_contextm_cpbx=Коробка
tool.trackassembly.pn_contextm_cpmd=Модель
tool.trackassembly.pn_contextm_cpnm=Имя
tool.trackassembly.pn_contextm_cprw=Ряд
tool.trackassembly.pn_contextm_cpth=Путь
tool.trackassembly.pn_contextm_cpty=Тип
tool.trackassembly.pn_contextm_ep=Развернуть узел
tool.trackassembly.pn_contextm_ex=Экспортировать
tool.trackassembly.pn_contextm_exdv=Внешний
tool.trackassembly.pn_contextm_exru=Автозапуск
tool.trackassembly.pn_contextm_li=Линия
tool.trackassembly.pn_contextm_licg=Изменить
tool.trackassembly.pn_contextm_licr=Создать
tool.trackassembly.pn_contextm_lirm=Удалить
tool.trackassembly.pn_contextm_mv=Переместить
tool.trackassembly.pn_contextm_mvbt=Вниз
tool.trackassembly.pn_contextm_mvdn=Ниже
tool.trackassembly.pn_contextm_mvtp=Вверх
tool.trackassembly.pn_contextm_mvup=Выше
tool.trackassembly.pn_contextm_st=Таблицы
tool.trackassembly.pn_contextm_stdl=Удалить файлы
tool.trackassembly.pn_contextm_sted=Редактировать (Luapad)
tool.trackassembly.pn_contextm_stnk=Скопировать ник
tool.trackassembly.pn_contextm_stpt=Скопировать путь
tool.trackassembly.pn_contextm_stsz=Скопировать размер
tool.trackassembly.pn_contextm_sttm=Скопировать время
tool.trackassembly.pn_contextm_tg=Переключить
tool.trackassembly.pn_contextm_ws=Мастерская
tool.trackassembly.pn_contextm_wsid=Скопировать WID
tool.trackassembly.pn_contextm_wsop=Открыть страницу
tool.trackassembly.pn_display=Модель вашего куска дороги здесь отображается
tool.trackassembly.pn_display_lb=Показать кусок
tool.trackassembly.pn_export=Нажмите чтобы сохранить файл базы данных
tool.trackassembly.pn_export_lb=Экспорт БД
tool.trackassembly.pn_routine=Список регулярно используемых кусков дороги
tool.trackassembly.pn_routine_hd=Часто используемых кусков пользователя\:
tool.trackassembly.pn_externdb=Внешние базы данных доступные для\:
tool.trackassembly.pn_extdsv_act=Активный
tool.trackassembly.pn_extdsv_hd=Список внешних баз данных DSV отображается здесь
tool.trackassembly.pn_extdsv_inf=Дополнительная информация
tool.trackassembly.pn_extdsv_lb=Внешний список DSV
tool.trackassembly.pn_extdsv_prf=Уникальный префикс базы данных
tool.trackassembly.pn_externdb_bte=Экспортировать
tool.trackassembly.pn_externdb_bte_tp=Экспортирует информацию из панели в список файлов и применяет
tool.trackassembly.pn_externdb_bti=Импортировать
tool.trackassembly.pn_externdb_bti_tp=Импортирует информацию из списка файлов в панель для редактирования
tool.trackassembly.pn_externdb_hd=Внешние базы данных для\:
tool.trackassembly.pn_externdb_lb=Нажмите правой для вариантов\:
tool.trackassembly.pn_externdb_bt1=Скопировать префикс
tool.trackassembly.pn_externdb_bt2=Скопировать път папку DSV
tool.trackassembly.pn_externdb_bt3=Скопировать ник таблицу
tool.trackassembly.pn_externdb_bt4=Скопировать път таблицу
tool.trackassembly.pn_externdb_bt5=Скопировать время таблицу
tool.trackassembly.pn_externdb_bt6=Скопировать размер таблицу
tool.trackassembly.pn_externdb_bt7=Изменить элементы (Luapad)
tool.trackassembly.pn_externdb_bt8=Удалить файл базы данных
tool.trackassembly.pn_ext_dsv_lb=Внешний список DSV
tool.trackassembly.pn_ext_dsv_hd=Список внешних баз данных DSV отображается здесь
tool.trackassembly.pn_ext_dsv_1=Активный
tool.trackassembly.pn_ext_dsv_2=Уникальный префикс базы данных
tool.trackassembly.pn_ext_dsv_3=Дополнительная информация
tool.trackassembly.pn_display=Модель вашего куска дороги здесь отображается
tool.trackassembly.pn_externdb_ttt=Текущее измененное значение конфигурации\:
tool.trackassembly.pn_pattern=Напишите шаблон здесь и нажмите ВВОД для выполнения поиска
tool.trackassembly.pn_pattern_lb=Напишите шаблон
tool.trackassembly.pn_routine=Список регулярно используемых кусков дороги
tool.trackassembly.pn_routine_end=Конец
tool.trackassembly.pn_routine_hd=Часто используемых кусков пользователя\:
tool.trackassembly.pn_routine_lb=Часто используемых кусков
tool.trackassembly.pn_routine_mod=Модель
tool.trackassembly.pn_routine_nam=Имя
tool.trackassembly.pn_routine_typ=Тип
tool.trackassembly.pn_routine_use=Срок
tool.trackassembly.pn_srchcol=Выберите столбец для поиска
tool.trackassembly.pn_srchcol_lb=<Искать по>
tool.trackassembly.pn_srchcol_lb1=Модель
tool.trackassembly.pn_srchcol_lb2=Тип
tool.trackassembly.pn_srchcol_lb3=Имя
tool.trackassembly.pn_srchcol_lb4=Конец
tool.trackassembly.pn_routine_lb=Часто используемых кусков
tool.trackassembly.pn_routine_lb1=Срок
tool.trackassembly.pn_routine_lb2=Конец
tool.trackassembly.pn_routine_lb3=Тип
tool.trackassembly.pn_routine_lb4=Имя
tool.trackassembly.pn_display_lb=Показать кусок
tool.trackassembly.pn_pattern_lb=Напишите шаблон
tool.trackassembly.buttonas<>=Уменьшить/Увеличить
tool.trackassembly.buttonas+/-=Начение по умолчаниюз
tool.trackassembly.buttonas@M=Запомнить стоимость
tool.trackassembly.buttonas@D=Значение по умолчанию
tool.trackassembly.buttonas@=Применять стоимость\:
Cleanup_asmtracks=Собранные куски дороги
Cleaned_asmtracks=Все куски дороги очищены
SBoxLimit_asmtracks=Вы достигли предела созданных кусков дороги!
tool.trackassembly.pntasist=Управляет изображение помощника для прилипания
tool.trackassembly.pntasist_con=Нарисовать помощника
tool.trackassembly.relica_var=Управление константами с репликацией. Значение на сервере передается всем клиентам для использования
tool.trackassembly.reload.1=Удалить элемент трассы. Удерживайте SHIFT для выбора якоря
tool.trackassembly.reload.2=Удалить элемент трассы. Удерживайте SHIFT для выбора луча связи
tool.trackassembly.reload.3=Удалить узел интерполяции кривой. Удерживайте SHIFT для очистки стека
tool.trackassembly.reload.4=Очистить список выбора перевернутых объектов. При пустом удаляет элемент
tool.trackassembly.reload.5=Удалить узел интерполяции кривой. Удерживайте SHIFT для очистки стека
tool.trackassembly.reload_use.1=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.reload_use.2=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.reload_use.3=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.reload_use.4=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.reload_use.5=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.resetvars=Нажмите чтобы сбросить дополнительные значения
tool.trackassembly.resetvars_con=V Сбросить переменные V
tool.trackassembly.right.1=Копировать модель элемента трассы или открыть окно частых элементов
tool.trackassembly.right.2=Копировать модель элемента трассы или открыть окно частых элементов
tool.trackassembly.right.3=Создать узел для сегментированной кривой. Удерживайте SHIFT для обновления
tool.trackassembly.right.4=Зарегистрировать объект в списке переворота. Удерживайте SHIFT для изменения модели
tool.trackassembly.right.5=Создать узел для сегментированной кривой. Удерживайте SHIFT для обновления
tool.trackassembly.right_use.1=Отключен ПРОКРУТКА. Копировать модель элемента трассы или открыть окно частых элементов
tool.trackassembly.right_use.2=Отключен ПРОКРУТКА. Копировать модель элемента трассы или открыть окно частых элементов
tool.trackassembly.right_use.3=Создать узел из ближайшей активной точки элемента трассы
tool.trackassembly.right_use.4=Отключен ПРОКРУТКА. Копировать модель элемента трассы или открыть окно частых элементов
tool.trackassembly.right_use.5=Создать узел из ближайшей активной точки элемента трассы
tool.trackassembly.rtradmenu=Измените это для настройки основного угла радиального меню и перемещения его опций
tool.trackassembly.rtradmenu_con=Ротация радиального меню\:
tool.trackassembly.sgradmenu=Измените это для округления радиального меню. Чем выше значение, тем плавнее
tool.trackassembly.sgradmenu_con=Сегменты радиального меню\:
tool.trackassembly.sizeucs=Масштаб для отображаемых систем координат
tool.trackassembly.sizeucs_con=Масштаб UCS\:
tool.trackassembly.spawncn=Создание куска в центре иначе в выбранной активной точке
tool.trackassembly.spawncn_con=Происхождение из центра
tool.trackassembly.spawnrate=Измените это для настройки количества сегментов трассы, создаваемых за тик сервера
tool.trackassembly.spawnrate_con=Скорость создания\:
tool.trackassembly.spnflat=Следующий кусок будет создан/приклеен/накоплен по горизонтали
tool.trackassembly.spnflat_con=Нагромождать по горизонтали
tool.trackassembly.stackcnt=Максимальное количество куски для нагромождения
tool.trackassembly.stackcnt_con=Количество кусков\:
tool.trackassembly.subfolder=Выберите категорию дороги для использования путем расширения папки
tool.trackassembly.subfolder_con=Категория дороги\:
tool.trackassembly.surfsnap=Приклеить кусок к поверхности к которой ссылается пользователь
tool.trackassembly.surfsnap_con=Приклеивать к поверхности
tool.trackassembly.timermode_ap=Нажмите здесь, чтобы применить изменения в конфигурации менеджера памяти SQL
tool.trackassembly.timermode_ap_con=Применить настройки памяти
tool.trackassembly.timermode_cqt=Таймер запроса кэша через запрос записи
tool.trackassembly.timermode_ct=При включении заставляет сборщик мусора запускаться при удалении записи
tool.trackassembly.timermode_ct_con=Включить сборку мусора
tool.trackassembly.timermode_lf=Измените это для настройки времени нахождения записи в кэше
tool.trackassembly.timermode_lf_con=Срок жизни записи\:
tool.trackassembly.timermode_md=Измените это для настройки алгоритма таймера менеджера памяти SQL
tool.trackassembly.timermode_mem=Менеджер памяти для таблицы SQL\:
tool.trackassembly.timermode_obj=Таймер объекта, прикрепленного к записи кэша
tool.trackassembly.timermode_rd=При включении удаляет запись из кэша, присваивая значение nil
tool.trackassembly.timermode_rd_con=Включить удаление записи
tool.trackassembly.type=Выберите типа дороги для использования путем расширения папки
tool.trackassembly.type_con=Тип дороги\:
tool.trackassembly.upspanchor=Включите якорь обновить для каждый раз когда создаете без накопления
tool.trackassembly.upspanchor_con=Обновить якорь при создаване
tool.trackassembly.utilities_admin=Настройка параметров администратора
tool.trackassembly.utilities_user=Настройка параметров пользователя
tool.trackassembly.weld=Создает сварные швы между кусками или кусоком/якорем
tool.trackassembly.weld_con=Сварной шов
tool.trackassembly.workmode.1=Общее создание/прилепание куски
tool.trackassembly.workmode.2=Пересечение активной точки
tool.trackassembly.workmode.3=Кривой отрезок линии фитинг
tool.trackassembly.workmode.4=Нормаль поверхности перевернуть
tool.trackassembly.workmode.5=Переходы с касательной
tool.trackassembly.workmode=Измените эту опцию чтобы использовать другой рабочий режим
tool.trackassembly.workmode_con=Рабочий режим\:

View File

@ -1,9 +1,85 @@
tool.trackassembly.workmode.1=一般生成/固定
tool.trackassembly.workmode.2=活动点交点
tool.trackassembly.workmode.3=曲线线段拟合
tool.trackassembly.workmode.4=表面法线翻转
tool.trackassembly.workmode.5=切线过渡弯

Cleaned_asmtracks=清理了所有轨道组件
Cleanup_asmtracks=组装好的轨道组件
SBoxLimit_asmtracks=You've hit the spawned tracks limit!
sbox_maxasmtracks=更改此项以调整服务器上通过轨道工具生成的东西
sbox_maxasmtracks_con=总段数\:
tool.trackassembly.activrad=选择活动点所需的最小距离
tool.trackassembly.activrad_con=活动半径\:
tool.trackassembly.adviser=控制渲染工具位置/角度顾问
tool.trackassembly.adviser_con=绘图顾问
tool.trackassembly.angsnap=固定在这个度数下产生的第一组件
tool.trackassembly.angsnap_con=角度校准\:
tool.trackassembly.appangfst=仅在第一个组件上应用角度偏移
tool.trackassembly.appangfst_con=首先应用角度
tool.trackassembly.applinfst=仅在第一个组件上应用线性偏移
tool.trackassembly.applinfst_con=首先应用线性
tool.trackassembly.bgskids=以逗号分隔的Bodygroup的选择代码/皮肤ID
tool.trackassembly.bgskids_con=Bodygroup/皮肤\:
tool.trackassembly.bgskids_def=在此编写选择代码。例如 1,0,0,2,1/3
tool.trackassembly.bnderrmod=更改此设置以定义客户端在地图边界之外生成组件时的行为
tool.trackassembly.bnderrmod_con=边界模式\:
tool.trackassembly.bnderrmod_error=显示拒绝堆栈/生成错误消息
tool.trackassembly.bnderrmod_generic=显示拒绝堆栈/生成通用消息
tool.trackassembly.bnderrmod_hint=显示拒绝堆栈/生成提示消息
tool.trackassembly.bnderrmod_log=拒绝堆栈/生成错误被记录
tool.trackassembly.bnderrmod_off=允许无限制地堆叠/生成
tool.trackassembly.buttonas+/-=Negate value
tool.trackassembly.buttonas<>=Decrement/Increment
tool.trackassembly.buttonas@D=Default value
tool.trackassembly.buttonas@M=Memorize value
tool.trackassembly.client_var=客户端玩家偏好。在工具客户端配置中创建的Convar
tool.trackassembly.crvleanlm=更改此设置以调整该段的倾斜弯曲锐度限制
tool.trackassembly.crvleanlm_con=曲率倾斜\:
tool.trackassembly.crvturnlm=更改此设置以调整该段的转弯弯曲锐度限制
tool.trackassembly.crvturnlm_con=曲率转弯\:
tool.trackassembly.curvefact=更改此值以调整曲线因子正切系数
tool.trackassembly.curvefact_con=曲线系数\:
tool.trackassembly.curvsmple=更改此设置以调整曲线插值样本
tool.trackassembly.curvsmple_con=曲线样本\:
tool.trackassembly.desc=组装供载具行驶的轨道|汉化:轻骑兵涅普,本人水平有限,若有语法、翻译错误还请指出
tool.trackassembly.devmode=启用后,将打开开发人员模式以进行跟踪和调试
tool.trackassembly.devmode_con=启用开发者模式
tool.trackassembly.dtmessage=控制上下文菜单服务器消息之间的时间间隔
tool.trackassembly.dtmessage_con=信息延迟\:
tool.trackassembly.enctxmall=启用后,将打开所有道具的工具专用上下文菜单
tool.trackassembly.enctxmall_con=为所有道具启用上下文菜单
tool.trackassembly.enctxmenu=启用后,将打开工具专用的上下文菜单
tool.trackassembly.enctxmenu_con=启用上下文菜单
tool.trackassembly.endsvlock=启用后将打开外部可插拔的DSV数据库文件锁
tool.trackassembly.endsvlock_con=启用 DSV 数据库锁
tool.trackassembly.engunsnap=通过玩家物理枪控制固定,当组件掉落
tool.trackassembly.engunsnap_con=启用物理枪固定
tool.trackassembly.enmultask=启用后,会在堆叠模式下开启多任务处理
tool.trackassembly.enmultask_con=启用多任务处理
tool.trackassembly.enpntmscr=启用后,通过鼠标滚动打开切换活动点
tool.trackassembly.enpntmscr_con=启用点滚动
tool.trackassembly.enradmenu=启用后,将打开工作模式径向菜单的使用功能
tool.trackassembly.enradmenu_con=启用径向菜单
tool.trackassembly.enwiremod=启用后将打开wiremod拓展
tool.trackassembly.enwiremod_con=启用wire拓展
tool.trackassembly.exportdb=启用后,会将数据库导出为一个大文件
tool.trackassembly.exportdb_con=启用数据库导出
tool.trackassembly.factory_reset=单击此按钮应用控制台变量出厂设置
tool.trackassembly.factory_reset_con=应用出厂设置
tool.trackassembly.forcelim=控制破坏焊缝所需的力
tool.trackassembly.forcelim_con=力限制\:
tool.trackassembly.freeze=使该组件在冻结状态下生成
tool.trackassembly.freeze_con=冻结组件
tool.trackassembly.ghostblnd=控制重影透明度混合。值越低越透明
tool.trackassembly.ghostblnd_con=重影透明度\:
tool.trackassembly.ghostcnt=控件显示工具重影支架件组件数量数
tool.trackassembly.ghostcnt_con=重影数量\:
tool.trackassembly.gravity=控制生成的组件的重力
tool.trackassembly.gravity_con=应用组件重力
tool.trackassembly.ignphysgn=忽略物理枪对生成/固定/堆叠组件的抓取
tool.trackassembly.ignphysgn_con=忽略物理枪
tool.trackassembly.igntype=使工具忽略固定/堆叠时的不同组件类型
tool.trackassembly.igntype_con=忽略轨道类型
tool.trackassembly.incsnpang=定义使用按钮滑块时的角度增量步长
tool.trackassembly.incsnpang_con=角度步进\:
tool.trackassembly.incsnplin=定义使用按钮滑块时的线性增量步骤
tool.trackassembly.incsnplin_con=线性步长\:
tool.trackassembly.info.1=在地图上生成部件或将部件对齐
tool.trackassembly.info.2=将轨道部分与为此设计的专用路段连接起来
tool.trackassembly.info.3=创建通过给定检查点的连续轨道布局
@ -14,16 +90,104 @@ tool.trackassembly.left.2=在交叉点生成轨道部件
tool.trackassembly.left.3=生成分段轨迹插值曲线
tool.trackassembly.left.4=在所选轨道浏览列表上生成
tool.trackassembly.left.5=生成分段轨迹插值曲线
tool.trackassembly.right.1=复制轨道件模型或打开常用部件对话框
tool.trackassembly.right.2=复制轨道件模型或打开常用部件对话框
tool.trackassembly.right.3=为分段曲线创建节点。按住SHIFT进行更新。
tool.trackassembly.right.4=将实体注册到浏览列表中。按住SHIFT更改模型。
tool.trackassembly.right.5=为分段曲线创建节点。按住SHIFT进行更新。
tool.trackassembly.right_use.1=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.right_use.2=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.right_use.3=从最近的轨道组件活动点生成节点。
tool.trackassembly.right_use.4=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.right_use.5=从最近的轨道组件活动点生成节点。
tool.trackassembly.logfile=启用后开始将日志流式传输到专用文件中
tool.trackassembly.logfile_con=启用日志文件
tool.trackassembly.logsmax=更改此项以调整日志流写入的最大输出行数
tool.trackassembly.logsmax_con=记录线路\:
tool.trackassembly.mass=生成的组件有多重
tool.trackassembly.mass_con=组件质量\:
tool.trackassembly.maxactrad=更改此项可调整获取点ID的最大活动半径
tool.trackassembly.maxactrad_con=半径限制\:
tool.trackassembly.maxforce=更改此设置以调整创建焊缝时的最大力限制
tool.trackassembly.maxforce_con=力限制\:
tool.trackassembly.maxfruse=更改此设置以调整有多少常用组件的深度
tool.trackassembly.maxfruse_con=常用组件\:
tool.trackassembly.maxlinear=更改此设置以调整组件上的最大线性偏移
tool.trackassembly.maxlinear_con=偏移限制\:
tool.trackassembly.maxmass=更改此设置可调整可应用于组件的最大质量
tool.trackassembly.maxmass_con=最大质量\:
tool.trackassembly.maxmenupr=更改此项以调整菜单中的小数位数
tool.trackassembly.maxmenupr_con=小数位\:
tool.trackassembly.maxstatts=定义脚本在失败之前将尝试的堆栈尝试次数
tool.trackassembly.maxstatts_con=堆栈尝试\:
tool.trackassembly.maxstcnt=更改此设置可调整堆叠模式下创建的最大件数
tool.trackassembly.maxstcnt_con=堆栈限制\:
tool.trackassembly.maxtrmarg=更改此设置以调整工具轨迹之间的时间
tool.trackassembly.maxtrmarg_con=迹线余量\:
tool.trackassembly.modedb=更改此项以定义轨道数据库的存储行为
tool.trackassembly.modedb_con=数据库模式\:
tool.trackassembly.modedb_lua=利用直接缓存存储
tool.trackassembly.modedb_sql=仅缓存请求的记录
tool.trackassembly.model=通过展开类型并单击节点来选择要开始/追踪轨道的组件
tool.trackassembly.model_con=组件模型\:
tool.trackassembly.name=轨道组件
tool.trackassembly.nextpic=额外的原点角节距偏移
tool.trackassembly.nextpic_con=原点间距\:
tool.trackassembly.nextrol=附加原点角滚动偏移
tool.trackassembly.nextrol_con=原点滚动\:
tool.trackassembly.nextx=附加原点线性 X 支距
tool.trackassembly.nextx_con=支距 X\:
tool.trackassembly.nexty=附加原点线性 Y 支距
tool.trackassembly.nexty_con=支距 Y\:
tool.trackassembly.nextyaw=附加原点偏航角偏移
tool.trackassembly.nextyaw_con=原点偏航\:
tool.trackassembly.nextz=附加原点线性 Z 支距
tool.trackassembly.nextz_con=支距 Z\:
tool.trackassembly.nocollide=在组件/锚点之间创建无碰撞
tool.trackassembly.nocollide_con=无碰撞
tool.trackassembly.nocollidew=在组件和世界之间创建无碰撞
tool.trackassembly.nocollidew_con=无碰撞世界
tool.trackassembly.nonrep_var=非复制convar控件。它们在服务器和客户端上有不同的值
tool.trackassembly.phyname=选择创建轨道时要使用的物理属性名称,因为这会影响表面摩擦力
tool.trackassembly.phyname_con=材料名称\:
tool.trackassembly.phyname_def=<选择表面材料名称>
tool.trackassembly.phytype=选择此处列出的物理属性类型
tool.trackassembly.phytype_con=材料类型\:
tool.trackassembly.phytype_def=<选择表面材料类型>
tool.trackassembly.pn_contextm_cp=复制
tool.trackassembly.pn_contextm_cpbx=复制单元格值
tool.trackassembly.pn_contextm_cpmd=模型
tool.trackassembly.pn_contextm_cpnm=姓名
tool.trackassembly.pn_contextm_cprw=
tool.trackassembly.pn_contextm_cpth=小路
tool.trackassembly.pn_contextm_cpty=类型
tool.trackassembly.pn_contextm_st=表格
tool.trackassembly.pn_contextm_stdl=删除数据库条目
tool.trackassembly.pn_contextm_sted=编辑表格内容Luapad
tool.trackassembly.pn_contextm_stnk=复制表缺口
tool.trackassembly.pn_contextm_stpt=复制表路径
tool.trackassembly.pn_contextm_stsz=复制表尺寸
tool.trackassembly.pn_contextm_sttm=复制表时间
tool.trackassembly.pn_display=您的轨道组件的模型显示在此处
tool.trackassembly.pn_display_lb=组件展示
tool.trackassembly.pn_export=单击可将客户端数据库导出为文件
tool.trackassembly.pn_export_lb=导出数据库
tool.trackassembly.pn_extdsv_act=活动的
tool.trackassembly.pn_extdsv_hd=此处显示外部 DSV 数据库列表
tool.trackassembly.pn_extdsv_inf=附加信息
tool.trackassembly.pn_extdsv_lb=外部 DSV 列表
tool.trackassembly.pn_extdsv_prf=数据库唯一前缀
tool.trackassembly.pn_externdb_bte=输出
tool.trackassembly.pn_externdb_bte_tp=将信息从面板导出到文件列表并应用
tool.trackassembly.pn_externdb_bti=输入
tool.trackassembly.pn_externdb_bti_tp=将文件列表中的信息导入面板中进行编辑
tool.trackassembly.pn_externdb_hd=外部数据库由\:
tool.trackassembly.pn_externdb_ttt=当前修改的配置值\:
tool.trackassembly.pn_pattern=在此写入模式并按 ENTER 执行搜索
tool.trackassembly.pn_pattern_lb=写入模式
tool.trackassembly.pn_routine=您经常使用的轨道列表
tool.trackassembly.pn_routine_end=结束
tool.trackassembly.pn_routine_hd=常用组件\:
tool.trackassembly.pn_routine_lb=常规项目
tool.trackassembly.pn_routine_mod=模型
tool.trackassembly.pn_routine_nam=名称
tool.trackassembly.pn_routine_typ=类型
tool.trackassembly.pn_routine_use=使用
tool.trackassembly.pn_srchcol=选择您要执行搜索的列表列
tool.trackassembly.pn_srchcol_lb=<搜索>
tool.trackassembly.pntasist=控制渲染工具固定点助手
tool.trackassembly.pntasist_con=绘图助手
tool.trackassembly.relica_var=复制convar控件。服务器值发送给所有客户端使用
tool.trackassembly.reload.1=移除轨道部件。按住SHIFT键选择锚点。
tool.trackassembly.reload.2=移除一个轨道。按住SHIFT键选择关系射线。
tool.trackassembly.reload.3=删除曲线插值节点。按住SHIFT清除堆栈。
@ -34,235 +198,60 @@ tool.trackassembly.reload_use.2=启用数据库导出以打开DSV管理器
tool.trackassembly.reload_use.3=启用数据库导出以打开DSV管理器
tool.trackassembly.reload_use.4=启用数据库导出以打开DSV管理器
tool.trackassembly.reload_use.5=启用数据库导出以打开DSV管理器
tool.trackassembly.desc=组装供载具行驶的轨道|汉化:轻骑兵涅普,本人水平有限,若有语法、翻译错误还请指出
tool.trackassembly.name=轨道组件
tool.trackassembly.phytype=选择此处列出的物理属性类型
tool.trackassembly.phytype_con=材料类型\:
tool.trackassembly.phytype_def=<选择表面材料类型>
tool.trackassembly.phyname=选择创建轨道时要使用的物理属性名称,因为这会影响表面摩擦力
tool.trackassembly.phyname_con=材料名称\:
tool.trackassembly.phyname_def=<选择表面材料名称>
tool.trackassembly.bgskids=以逗号分隔的Bodygroup的选择代码/皮肤ID
tool.trackassembly.bgskids_con=Bodygroup/皮肤\:
tool.trackassembly.bgskids_def=在此编写选择代码。例如 1,0,0,2,1/3
tool.trackassembly.mass=生成的组件有多重
tool.trackassembly.mass_con=组件质量\:
tool.trackassembly.model=通过展开类型并单击节点来选择要开始/追踪轨道的组件
tool.trackassembly.model_con=组件模型\:
tool.trackassembly.activrad=选择活动点所需的最小距离
tool.trackassembly.activrad_con=活动半径\:
tool.trackassembly.stackcnt=堆叠时创建的最大组件数量
tool.trackassembly.stackcnt_con=组件数量\:
tool.trackassembly.angsnap=固定在这个度数下产生的第一组件
tool.trackassembly.angsnap_con=角度校准\:
tool.trackassembly.resetvars=单击以重置附加值
tool.trackassembly.resetvars_con=V 重置变量 V
tool.trackassembly.nextpic=额外的原点角节距偏移
tool.trackassembly.nextpic_con=原点间距\:
tool.trackassembly.nextyaw=附加原点偏航角偏移
tool.trackassembly.nextyaw_con=原点偏航\:
tool.trackassembly.nextrol=附加原点角滚动偏移
tool.trackassembly.nextrol_con=原点滚动\:
tool.trackassembly.nextx=附加原点线性 X 支距
tool.trackassembly.nextx_con=支距 X\:
tool.trackassembly.nexty=附加原点线性 Y 支距
tool.trackassembly.nexty_con=支距 Y\:
tool.trackassembly.nextz=附加原点线性 Z 支距
tool.trackassembly.nextz_con=支距 Z\:
tool.trackassembly.gravity=控制生成的组件的重力
tool.trackassembly.gravity_con=应用组件重力
tool.trackassembly.weld=在组件或组件/锚点之间创建焊接
tool.trackassembly.weld_con=焊接
tool.trackassembly.forcelim=控制破坏焊缝所需的力
tool.trackassembly.forcelim_con=力限制\:
tool.trackassembly.ignphysgn=忽略物理枪对生成/固定/堆叠组件的抓取
tool.trackassembly.ignphysgn_con=忽略物理枪
tool.trackassembly.nocollide=在组件/锚点之间创建无碰撞
tool.trackassembly.nocollide_con=无碰撞
tool.trackassembly.nocollidew=在组件和世界之间创建无碰撞
tool.trackassembly.nocollidew_con=无碰撞世界
tool.trackassembly.freeze=使该组件在冻结状态下生成
tool.trackassembly.freeze_con=冻结组件
tool.trackassembly.igntype=使工具忽略固定/堆叠时的不同组件类型
tool.trackassembly.igntype_con=忽略轨道类型
tool.trackassembly.spnflat=下一组件将水平生成/固定/堆叠
tool.trackassembly.spnflat_con=水平生成
tool.trackassembly.spawncn=在中心点生成组件,否则相对于所选的活动点生成组件
tool.trackassembly.spawncn_con=中心原点
tool.trackassembly.surfsnap=将组件固定在玩家指向的表面上
tool.trackassembly.surfsnap_con=固定到轨迹表面
tool.trackassembly.appangfst=仅在第一个组件上应用角度偏移
tool.trackassembly.appangfst_con=首先应用角度
tool.trackassembly.applinfst=仅在第一个组件上应用线性偏移
tool.trackassembly.applinfst_con=首先应用线性
tool.trackassembly.adviser=控制渲染工具位置/角度顾问
tool.trackassembly.adviser_con=绘图顾问
tool.trackassembly.pntasist=控制渲染工具固定点助手
tool.trackassembly.pntasist_con=绘图助手
tool.trackassembly.ghostcnt=控件显示工具重影支架件组件数量数
tool.trackassembly.ghostcnt_con=重影数量\:
tool.trackassembly.ghostblnd=控制重影透明度混合。值越低越透明
tool.trackassembly.ghostblnd_con=重影透明度\:
tool.trackassembly.dtmessage=控制上下文菜单服务器消息之间的时间间隔
tool.trackassembly.dtmessage_con=信息延迟\:
tool.trackassembly.engunsnap=通过玩家物理枪控制固定,当组件掉落
tool.trackassembly.engunsnap_con=启用物理枪固定
tool.trackassembly.upspanchor=启用在每次生成时更新锚点(非固定状态)
tool.trackassembly.upspanchor_con=更新生成时的锚点
tool.trackassembly.type=通过展开文件夹选择要使用的轨道类型
tool.trackassembly.type_con=轨道类型\:
tool.trackassembly.subfolder=通过展开文件夹选择要使用的轨道类别
tool.trackassembly.subfolder_con=轨道类别\:
tool.trackassembly.workmode=更改此选项以选择不同的工作模式
tool.trackassembly.workmode_con=工作模式\:
tool.trackassembly.pn_export=单击可将客户端数据库导出为文件
tool.trackassembly.pn_export_lb=导出数据库
tool.trackassembly.pn_routine=您经常使用的轨道列表
tool.trackassembly.pn_routine_hd=常用组件\:
tool.trackassembly.pn_externdb=外部数据库可用于\:
tool.trackassembly.pn_externdb_hd=外部数据库由\:
tool.trackassembly.pn_externdb_lb=右键单击选项\:
tool.trackassembly.pn_externdb_ttt=当前修改的配置值\:
tool.trackassembly.pn_externdb_bti=输入
tool.trackassembly.pn_externdb_bti_tp=将文件列表中的信息导入面板中进行编辑
tool.trackassembly.pn_externdb_bte=输出
tool.trackassembly.pn_externdb_bte_tp=将信息从面板导出到文件列表并应用
tool.trackassembly.pn_externdb_bt1=复制唯一前缀
tool.trackassembly.pn_externdb_bt2=复制 DSV 文件夹路径
tool.trackassembly.pn_externdb_bt3=复制表缺口
tool.trackassembly.pn_externdb_bt4=复制表路径
tool.trackassembly.pn_externdb_bt5=复制表时间
tool.trackassembly.pn_externdb_bt6=复制表尺寸
tool.trackassembly.pn_externdb_bt7=编辑表格内容Luapad
tool.trackassembly.pn_externdb_bt8=删除数据库条目
tool.trackassembly.pn_externdb_cm1=复制单元格值
tool.trackassembly.pn_externdb_cm2=复制整行
tool.trackassembly.pn_externdb_cm3=启用/禁用
tool.trackassembly.pn_externdb_cm4=更改线路
tool.trackassembly.pn_externdb_cm5=创造线路
tool.trackassembly.pn_externdb_cm6=移除线路
tool.trackassembly.pn_ext_dsv_lb=外部 DSV 列表
tool.trackassembly.pn_ext_dsv_hd=此处显示外部 DSV 数据库列表
tool.trackassembly.pn_ext_dsv_1=活动的
tool.trackassembly.pn_ext_dsv_2=数据库唯一前缀
tool.trackassembly.pn_ext_dsv_3=附加信息
tool.trackassembly.pn_display=您的轨道组件的模型显示在此处
tool.trackassembly.pn_pattern=在此写入模式并按 ENTER 执行搜索
tool.trackassembly.pn_srchcol=选择您要执行搜索的列表列
tool.trackassembly.pn_srchcol_lb=<搜索>
tool.trackassembly.pn_srchcol_lb1=模型
tool.trackassembly.pn_srchcol_lb2=类型
tool.trackassembly.pn_srchcol_lb3=名称
tool.trackassembly.pn_srchcol_lb4=结束
tool.trackassembly.pn_routine_lb=常规项目
tool.trackassembly.pn_routine_lb1=使用
tool.trackassembly.pn_routine_lb2=结束
tool.trackassembly.pn_routine_lb3=类型
tool.trackassembly.pn_routine_lb4=名称
tool.trackassembly.pn_display_lb=组件展示
tool.trackassembly.pn_pattern_lb=写入模式
tool.trackassembly.sizeucs=为显示的坐标系设置的比例
tool.trackassembly.sizeucs_con=缩放 UCS\:
tool.trackassembly.maxstatts=定义脚本在失败之前将尝试的堆栈尝试次数
tool.trackassembly.maxstatts_con=堆栈尝试\:
tool.trackassembly.incsnpang=定义使用按钮滑块时的角度增量步长
tool.trackassembly.incsnpang_con=角度步进\:
tool.trackassembly.incsnplin=定义使用按钮滑块时的线性增量步骤
tool.trackassembly.incsnplin_con=线性步长\:
tool.trackassembly.enradmenu=启用后,将打开工作模式径向菜单的使用功能
tool.trackassembly.enradmenu_con=启用径向菜单
tool.trackassembly.sgradmenu=更改此设置以使径向菜单更加圆形。越高越平滑
tool.trackassembly.sgradmenu_con=径向段\:
tool.trackassembly.right.1=复制轨道件模型或打开常用部件对话框
tool.trackassembly.right.2=复制轨道件模型或打开常用部件对话框
tool.trackassembly.right.3=为分段曲线创建节点。按住SHIFT进行更新。
tool.trackassembly.right.4=将实体注册到浏览列表中。按住SHIFT更改模型。
tool.trackassembly.right.5=为分段曲线创建节点。按住SHIFT进行更新。
tool.trackassembly.right_use.1=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.right_use.2=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.right_use.3=从最近的轨道组件活动点生成节点。
tool.trackassembly.right_use.4=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.right_use.5=从最近的轨道组件活动点生成节点。
tool.trackassembly.rtradmenu=更改此设置可调整径向菜单基角并重新定位其选项
tool.trackassembly.rtradmenu_con=径向旋转\:
tool.trackassembly.enpntmscr=启用后,通过鼠标滚动打开切换活动点
tool.trackassembly.enpntmscr_con=启用点滚动
tool.trackassembly.exportdb=启用后,会将数据库导出为一个大文件
tool.trackassembly.exportdb_con=启用数据库导出
tool.trackassembly.modedb=将其更改为定义轨道数据库的存储行为
tool.trackassembly.modedb_con=数据库模式\:
tool.trackassembly.devmode=启用后,将打开开发人员模式以进行跟踪和调试
tool.trackassembly.devmode_con=启用开发者模式
tool.trackassembly.maxtrmarg=更改此设置以调整工具轨迹之间的时间
tool.trackassembly.maxtrmarg_con=迹线余量\:
tool.trackassembly.maxmenupr=更改此项以调整菜单中的小数位数
tool.trackassembly.maxmenupr_con=小数位\:
tool.trackassembly.maxmass=更改此设置可调整可应用于组件的最大质量
tool.trackassembly.maxmass_con=最大质量\:
tool.trackassembly.maxlinear=更改此设置以调整组件上的最大线性偏移
tool.trackassembly.maxlinear_con=偏移限制\:
tool.trackassembly.maxforce=更改此设置以调整创建焊缝时的最大力限制
tool.trackassembly.maxforce_con=力限制\:
tool.trackassembly.maxactrad=更改此项可调整获取点ID的最大活动半径
tool.trackassembly.maxactrad_con=半径限制\:
tool.trackassembly.maxstcnt=更改此设置可调整堆叠模式下创建的最大件数
tool.trackassembly.maxstcnt_con=堆栈限制\:
tool.trackassembly.enwiremod=启用后将打开wiremod拓展
tool.trackassembly.enwiremod_con=启用wire拓展
tool.trackassembly.enmultask=启用后,会在堆叠模式下开启多任务处理
tool.trackassembly.enmultask_con=启用多任务处理
tool.trackassembly.enctxmenu=启用后,将打开工具专用的上下文菜单
tool.trackassembly.enctxmenu_con=启用上下文菜单
tool.trackassembly.enctxmall=启用后,将打开所有道具的工具专用上下文菜单
tool.trackassembly.enctxmall_con=为所有道具启用上下文菜单
tool.trackassembly.endsvlock=启用后将打开外部可插拔的DSV数据库文件锁
tool.trackassembly.endsvlock_con=启用 DSV 数据库锁
tool.trackassembly.curvefact=更改此值以调整曲线因子正切系数
tool.trackassembly.curvefact_con=曲线系数\:
tool.trackassembly.curvsmple=更改此设置以调整曲线插值样本
tool.trackassembly.curvsmple_con=曲线样本\:
tool.trackassembly.crvturnlm=更改此设置以调整该段的转弯弯曲锐度限制
tool.trackassembly.crvturnlm_con=曲率转弯\:
tool.trackassembly.crvleanlm=更改此设置以调整该段的倾斜弯曲锐度限制
tool.trackassembly.crvleanlm_con=曲率倾斜\:
tool.trackassembly.sgradmenu=更改此设置以使径向菜单更加圆形。越高越平滑
tool.trackassembly.sgradmenu_con=径向段\:
tool.trackassembly.sizeucs=为显示的坐标系设置的比例
tool.trackassembly.sizeucs_con=缩放 UCS\:
tool.trackassembly.spawncn=在中心点生成组件,否则相对于所选的活动点生成组件
tool.trackassembly.spawncn_con=中心原点
tool.trackassembly.spawnrate=更改此设置以调整每个服务器刻度生成的轨道段的数量
tool.trackassembly.spawnrate_con=生成率\:
tool.trackassembly.bnderrmod=更改此设置以定义客户端在地图边界之外生成组件时的行为
tool.trackassembly.bnderrmod_off=允许无限制地堆叠/生成
tool.trackassembly.bnderrmod_log=拒绝堆栈/生成错误被记录
tool.trackassembly.bnderrmod_hint=显示拒绝堆栈/生成提示消息
tool.trackassembly.bnderrmod_generic=显示拒绝堆栈/生成通用消息
tool.trackassembly.bnderrmod_error=显示拒绝堆栈/生成错误消息
tool.trackassembly.bnderrmod_con=边界模式\:
tool.trackassembly.modedb=更改此项以定义轨道数据库的存储行为
tool.trackassembly.modedb_lua=利用直接缓存存储
tool.trackassembly.modedb_sql=仅缓存请求的记录
tool.trackassembly.modedb_con=数据库模式\:
tool.trackassembly.maxfruse=更改此设置以调整有多少常用组件的深度
tool.trackassembly.maxfruse_con=常用组件\:
tool.trackassembly.spnflat=下一组件将水平生成/固定/堆叠
tool.trackassembly.spnflat_con=水平生成
tool.trackassembly.stackcnt=堆叠时创建的最大组件数量
tool.trackassembly.stackcnt_con=组件数量\:
tool.trackassembly.subfolder=通过展开文件夹选择要使用的轨道类别
tool.trackassembly.subfolder_con=轨道类别\:
tool.trackassembly.surfsnap=将组件固定在玩家指向的表面上
tool.trackassembly.surfsnap_con=固定到轨迹表面
tool.trackassembly.timermode_ap=单击此按钮可将更改应用到 SQL 内存管理器配置
tool.trackassembly.timermode_ap_con=应用内存设置
tool.trackassembly.timermode_md=更改此项可调整 SQL 内存管理器的计时器算法
tool.trackassembly.timermode_lf=更改此项可调整记录在缓存中的停留时间
tool.trackassembly.timermode_lf_con=Record life\:
tool.trackassembly.timermode_rd=启用后,通过强制 nil 值从缓存中擦除记录
tool.trackassembly.timermode_rd_con=启用记录删除
tool.trackassembly.timermode_cqt=通过记录请求缓存查询计时器
tool.trackassembly.timermode_ct=启用后,删除记录时强制运行垃圾回收
tool.trackassembly.timermode_ct_con=启用垃圾收集
tool.trackassembly.timermode_lf=更改此项可调整记录在缓存中的停留时间
tool.trackassembly.timermode_lf_con=Record life\:
tool.trackassembly.timermode_md=更改此项可调整 SQL 内存管理器的计时器算法
tool.trackassembly.timermode_mem=SQL表的内存管理器\:
tool.trackassembly.timermode_cqt=通过记录请求缓存查询计时器
tool.trackassembly.timermode_obj=附加到缓存记录的对象计时器
tool.trackassembly.factory_reset=单击此按钮应用控制台变量出厂设置
tool.trackassembly.factory_reset_con=应用出厂设置
tool.trackassembly.logfile=启用后开始将日志流式传输到专用文件中
tool.trackassembly.logfile_con=启用日志文件
tool.trackassembly.logsmax=更改此项以调整日志流写入的最大输出行数
tool.trackassembly.logsmax_con=记录线路\:
tool.trackassembly.client_var=客户端玩家偏好。在工具客户端配置中创建的Convar
tool.trackassembly.nonrep_var=非复制convar控件。它们在服务器和客户端上有不同的值
tool.trackassembly.relica_var=复制convar控件。服务器值发送给所有客户端使用
tool.trackassembly.utilities_user=用户设置
tool.trackassembly.timermode_rd=启用后,通过强制 nil 值从缓存中擦除记录
tool.trackassembly.timermode_rd_con=启用记录删除
tool.trackassembly.type=通过展开文件夹选择要使用的轨道类型
tool.trackassembly.type_con=轨道类型\:
tool.trackassembly.upspanchor=启用在每次生成时更新锚点(非固定状态)
tool.trackassembly.upspanchor_con=更新生成时的锚点
tool.trackassembly.utilities_admin=管理员设置
tool.trackassembly.buttonas<>=Decrement/Increment
tool.trackassembly.buttonas+/-=Negate value
tool.trackassembly.buttonas@M=Memorize value
tool.trackassembly.buttonas@D=Default value
tool.trackassembly.buttonas@45=Update 45
tool.trackassembly.buttonas@90=Update 90
tool.trackassembly.buttonas@135=Update 135
tool.trackassembly.buttonas@180=Update 180
sbox_maxasmtracks=更改此项以调整服务器上通过轨道工具生成的东西
sbox_maxasmtracks_con=总段数\:
Cleanup_asmtracks=组装好的轨道组件
Cleaned_asmtracks=清理了所有轨道组件
SBoxLimit_asmtracks=You've hit the spawned tracks limit!
tool.trackassembly.utilities_user=用户设置
tool.trackassembly.weld=在组件或组件/锚点之间创建焊接
tool.trackassembly.weld_con=焊接
tool.trackassembly.workmode.1=一般生成/固定
tool.trackassembly.workmode.2=活动点交点
tool.trackassembly.workmode.3=曲线线段拟合
tool.trackassembly.workmode.4=表面法线翻转
tool.trackassembly.workmode.5=切线过渡弯
tool.trackassembly.workmode=更改此选项以选择不同的工作模式
tool.trackassembly.workmode_con=工作模式\: