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) } }else{ error("Additions line fail "+M) }
P1 = trackasmlibGetProperty() P1 = trackasmlibGetProperty()
if(P1[3,string] == "Metal") if(P1[3,string] == "Liquid")
{ {
P2 = trackasmlibGetProperty(P1[3,string]) P2 = trackasmlibGetProperty(P1[3,string])
if(P2[5, string] == "crowbar") if(P2[1, string] == "slime")
{ {
print("Property type OK <"+P2[5, string]+">") print("Property type OK <"+P2[5, string]+">")
}else{ error("Property type fail <"+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 SetNumSlider
ModelToName: Cut ModelToName: Cut
ModelToName: Sub ModelToName: Sub
BIND_PRESS:
RegisterPOA: Store
ModelToName: App ModelToName: App
DefaultType: Avoided DefaultType: Avoided
LocatePOA: Missing ID LocatePOA: Missing ID
@ -28,6 +30,7 @@ DRAW_RADMENU: Release
DRAW_RADMENU: Hook mismatch DRAW_RADMENU: Hook mismatch
DRAW_RADMENU: Scroll release DRAW_RADMENU: Scroll release
DRAW_RADMENU: Menu disabled DRAW_RADMENU: Menu disabled
DRAW_RADMENU: %(gmod_tool%) Swep other
DRAW_GHOSTS: Swep invalid DRAW_GHOSTS: Swep invalid
DRAW_GHOSTS: Swep not tool DRAW_GHOSTS: Swep not tool
DRAW_GHOSTS: %(gmod_tool%) Swep other DRAW_GHOSTS: %(gmod_tool%) Swep other
@ -41,7 +44,6 @@ DRAW_PHYSGUN: Swep invalid
DRAW_PHYSGUN: Extension disabled DRAW_PHYSGUN: Extension disabled
DRAW_PHYSGUN: Trace not piece DRAW_PHYSGUN: Trace not piece
DRAW_PHYSGUN: %(weapon_physgun%) Swep other DRAW_PHYSGUN: %(weapon_physgun%) Swep other
DRAW_RADMENU: %(gmod_tool%) Swep other
POINT_SELECT: Bind not pressed POINT_SELECT: Bind not pressed
POINT_SELECT: Active key missing POINT_SELECT: Active key missing
BIND_PRESS: Hook mismatch BIND_PRESS: Hook mismatch
@ -52,9 +54,12 @@ BIND_PRESS: Bind not pressed
BIND_PRESS: %(gmod_tool%) Swep other BIND_PRESS: %(gmod_tool%) Swep other
POPULATE_ENTITY: Handler POPULATE_ENTITY: Handler
UPDATE_CONTEXTVAL: Entity UPDATE_CONTEXTVAL: Entity
TimerRestart: Memory manager skip
BorderValue: Missing BorderValue: Missing
GetBuilderNick: Key mismatch GetBuilderNick: Key mismatch
GetBuilderID: Builder object missing GetBuilderID: Builder object missing
GetHookInfo: %(gmod_tool%) Swep other GetHookInfo: Swep invalid
GetHookInfo: %(weapon_physgun%) Swep other GetHookInfo: Swep other
GetHookInfo: Mode different
GetHookInfo: Tool invalid
GetEntityHitID: Trace skip GetEntityHitID: Trace skip

View File

@ -9,7 +9,8 @@
]]-- ]]--
-- Local reference to the module. -- 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. * 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" 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 * Change this if you want to use different in-game type
* You can also use multiple types myType1, myType2, * 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 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 -- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix 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 -- Do not touch this also, it is used for debugging
local myScript = tostring(debug.getinfo(1).source or "N/A") local myScript = tostring(debug.getinfo(1).source or "N/A")
myScript = "@"..myScript:gsub("^%W+", ""):gsub("\\","/") 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
* 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
-- Store a reference to disable symbol -- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL") local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsDirDSV = asmlib.GetOpVar("DIRPATH_DSV")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU") local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE") 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 -- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS").. local myDsv = asmlib.GetLibraryPath(gsDirDSV, myPrefix, gsToolPF.."PIECES")
asmlib.GetOpVar("DIRPATH_DSV")..
gsFormPF:format(myPrefix, gsToolPF.."PIECES")
--[[ --[[
* This flag is used when the track pieces list needs to be processed. * 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") 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 -- 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 -- Register the addon to the workshop ID list
asmlib.WorkshopID(myAddon, "287012681") asmlib.WorkshopID(myAddon, "287012681")
-- Register the addon to the pluggable DSV list -- 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 * 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 * 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 * 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 * 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. * and make every track point to its dedicated category handler.
]]-- ]]--
local myCategory = { local myCategory = {
@ -199,8 +193,9 @@ local myCategory = {
]]} ]]}
} }
-- Register the addon category to the pluggable DSV list -- 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 * 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 ). * 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 * 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 * 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. * 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. * 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. * 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 -- 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 * 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 * and then for every active point, you must have one array of
* strings and numbers, where the elements match the following data settings. * strings and numbers, where the elements match the following data settings.
* {MODELBASE, MODELADD, ENTCLASS, LINEID, POSOFF, ANGOFF, MOVETYPE, PHYSINIT, DRSHADOW, PHMOTION, PHYSLEEP, SETSOLID} * {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. * 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. * 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. * 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 * 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 * 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. * 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. * 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. * 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 = {} local myAdditions = {}
-- Register the addon ADDITIONS to the pluggable DSV list -- 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 * Create a table and populate it as shown below
@ -301,17 +298,18 @@ mySyncTable("ADDITIONS", myAdditions, true)
* {TYPE, LINEID, NAME} * {TYPE, LINEID, NAME}
* TYPE > This is the category under your physical properties are stored internally. * 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. * 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 * 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 * 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. * 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. * 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. * NAME > This stores the name of the physical property. It must an actual physical property.
]]-- ]]--
local myPhysproperties = {} local myPhysproperties = {}
-- Register the addon PHYSPROPERTIES to the pluggable DSV list -- 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

@ -9,7 +9,8 @@
]]-- ]]--
-- Local reference to the module. -- 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. -- Change this to your addon name.
local myAddon = "SligWolf's Minitrains" -- Your addon name goes here 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 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 -- 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 -- This is the script path. It tells TA who wants to add these models
-- Do not touch this also, it is used for debugging -- Do not touch this also, it is used for debugging
local myScript = tostring(debug.getinfo(1).source or "N/A") local myScript = tostring(debug.getinfo(1).source or "N/A")
myScript = "@"..myScript:gsub("^%W+", ""):gsub("\\","/") 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 * This function defines what happens when there is an error present
* Usually you can tell Gmod that you want it to generate an error * 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 function myThrowError(vMesg)
local sMesg = tostring(vMesg) -- Make sure the message is string local sMesg = tostring(vMesg) -- Make sure the message is string
if(asmlib) then asmlib.LogInstance(sMesg) end -- Output the message into the logs 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 end
if(asmlib) then -- Store a reference to disable symbol
-- Store a reference to disable symbol local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL") local gsDirDSV = asmlib.GetOpVar("DIRPATH_DSV")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU") local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE") local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsModeDB = asmlib.GetOpVar("MODE_DATABASE") local gsModeDB = asmlib.GetOpVar("MODE_DATABASE")
local gsFormPF = asmlib.GetOpVar("FORM_PREFIXDSV") local gsPrfGen = asmlib.GetOpVar("DBEXP_PREFGEN")
-- This is the path to your DSV local myPath = { -- This contains the path to generic DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS").. asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."PIECES"),
asmlib.GetOpVar("DIRPATH_DSV").. asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."CATEGORY"),
gsFormPF:format(myPrefix, gsToolPF.."PIECES") asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."ADDITIONS"),
asmlib.GetLibraryPath(gsDirDSV, gsPrfGen, gsToolPF.."PHYSPROPERTIES")
}
-- Evaluated to TRUE when the global database is exported -- Tell TA what custom script we just called don't touch it
local myFlag = file.Exists(myDsv, "DATA") asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}", mySource)
-- Tell TA what custom script we just called don't touch it -- Check for exported generic database for PIECES
asmlib.LogInstance(">>> "..myScript.." ("..tostring(myFlag).."): {"..myAddon..", "..myPrefix.."}") -- 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, [[ asmlib.Categorize(myAddon, [[
function(m) function(m)
local function conv(x) return " "..x:sub(2,2):upper() end local r = m:gsub("models/props_phx/construct/",""):gsub("_","/")
local r = m:gsub("models/minitrains/",""):gsub("_","/") local s = r:find("/"); r = s and r:sub(1,s-1) or nil
local s = r:find("/") or r:find("%.") local n = nil
r = (s and r:sub(1,s-1) or "other"); o = {r} if(r) then
if(r == "sw") then o = {"buffer"} end; if(r == "metal" ) then n = "My metal plate" end
for i = 1, #o do o[i] = ("_"..o[i]):gsub("_%w", conv):sub(2,-1) end; return o end if(r == "windows") then n = "My glass plate" end
]]) end
r = r and r:gsub("^%l", string.upper) or nil
asmlib.WorkshopID(myAddon, 149759773) p = r and {r} or nil
return p, n
if(gsModeDB == "SQL") then sqlBegin() end 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
end end
asmlib.LogInstance("<<< "..myScript) asmlib.WorkshopID(myAddon, "287012681")
else
myThrowError("Failed loading the required module") 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 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 set emd_chew_skip=%emd_chew_repo%\data\trackassembly\tools\peaces_manager\models_ignored.txt
:: How many addons are to be processed :: How many addons are to be processed
set emd_chew_addfrm=30 set emd_chew_addfrm=31
set emd_chew_addcnt=30 set emd_chew_addcnt=31
:: GMA addons to be processed :: GMA addons to be processed
set emd_chew_addlst[1]=740453553 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[28]=3071058065
set emd_chew_addlst[29]=3297918081 set emd_chew_addlst[29]=3297918081
set emd_chew_addlst[30]=3314861708 set emd_chew_addlst[30]=3314861708
set emd_chew_addlst[31]=2233731395
:: Folder list for extraction and the directories they will be extracted :: Folder list for extraction and the directories they will be extracted
set emd_chew_adddir[1]=AlexCookie's 2ft track pack 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[28]=RockMan's Fortification
set emd_chew_adddir[29]=SligWolf's Suspension Train set emd_chew_adddir[29]=SligWolf's Suspension Train
set emd_chew_adddir[30]=Modular City Street set emd_chew_adddir[30]=Modular City Street
set emd_chew_adddir[31]=Scene Builder
:: Show the current folder :: Show the current folder
echo Running in: %emd_chew_pathb% 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/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/misc/end1.mdl","AlexCookie's 2ft track pack","End1"
"models/alexcookie/2ft/straight/straight_1024.mdl","AlexCookie's 2ft track pack","Straight 1024" "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 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. * 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 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 * Change this if you want to use different in-game type
* You can also use multiple types myType1, myType2, * 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 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 -- This is used for addon relation prefix. Fingers away from it
local myPrefix = myAddon:gsub("[^%w]","_") -- Addon prefix 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 -- Do not touch this also, it is used for debugging
local myScript = tostring(debug.getinfo(1).source or "N/A") local myScript = tostring(debug.getinfo(1).source or "N/A")
myScript = "@"..myScript:gsub("^%W+", ""):gsub("\\","/") 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
* 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
-- Store a reference to disable symbol -- Store a reference to disable symbol
local gsMissDB = asmlib.GetOpVar("MISS_NOSQL") local gsMissDB = asmlib.GetOpVar("MISS_NOSQL")
local gsDirDSV = asmlib.GetOpVar("DIRPATH_DSV")
local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU") local gsToolPF = asmlib.GetOpVar("TOOLNAME_PU")
local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE") local gsSymOff = asmlib.GetOpVar("OPSYM_DISABLE")
local gsFormPF = asmlib.GetOpVar("FORM_PREFIXDSV")
-- This is the path to your DSV -- This is the path to your DSV
local myDsv = asmlib.GetOpVar("DIRPATH_BAS").. local myDsv = asmlib.GetLibraryPath(gsDirDSV, myPrefix, gsToolPF.."PIECES")
asmlib.GetOpVar("DIRPATH_DSV")..
gsFormPF:format(myPrefix, gsToolPF.."PIECES")
--[[ --[[
* This flag is used when the track pieces list needs to be processed. * 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") 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 -- 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 -- Register the addon to the workshop ID list
asmlib.WorkshopID(myAddon, "326640186") asmlib.WorkshopID(myAddon, "326640186")
-- Register the addon to the plugable DSV list -- 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 * 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 -- 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 * 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 ). * 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 * 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 * 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. * 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. * 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. * 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 -- 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 * 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 * and then for every active point, you must have one array of
* strings and numbers, where the elements match the following data settings. * strings and numbers, where the elements match the following data settings.
* {MODELBASE, MODELADD, ENTCLASS, LINEID, POSOFF, ANGOFF, MOVETYPE, PHYSINIT, DRSHADOW, PHMOTION, PHYSLEEP, SETSOLID} * {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. * 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. * 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. * 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 * 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 * 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. * 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. * 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. * 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 -- 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 * Create a table and populate it as shown below
@ -402,10 +400,10 @@ mySyncTable("ADDITIONS", myAdditions, true)
* {TYPE, LINEID, NAME} * {TYPE, LINEID, NAME}
* TYPE > This is the category under your physical properties are stored internally. * 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. * 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 * 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 * 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. * 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. * 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. * 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 = {} local myPhysproperties = {}
-- Register the addon PHYSPROPERTIES to the plugable DSV list -- 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 local defTab = makTab:GetDefinition(); if(not defTab) then
asmlib.LogInstance("No table definition"); return {} end asmlib.LogInstance("No table definition"); return {} end
local stRec = asmlib.CacheQueryAdditions(sModel); if(not stRec) then return {} end local stRec = asmlib.CacheQueryAdditions(sModel); if(not stRec) then return {} end
if(not stRec[nID]) then return {} end; stRec = stRec[nID] if(not stRec[nID]) then return {} end -- There is no line with such number
local iRow, arData = 2, {} -- The model is missed by the main SELECT local arData = {}; stRec = stRec[nID] -- The model is missed by the main SELECT
while(defTab[iRow]) do -- Ordered by ID. Get the line per model for iRow = 2, defTab.Size do -- Ordered by ID. Get the line per model
arData[iRow-1] = stRec[defTab[iRow][1]]; iRow = (iRow + 1) arData[iRow-1] = stRec[defTab[iRow][1]]
end; return arData end; return arData
end end
@ -376,7 +376,7 @@ __e2setcost(20)
e2function number entity:trackasmlibAttachBodyGroups(string sBgpID) e2function number entity:trackasmlibAttachBodyGroups(string sBgpID)
if(not (this and this:IsValid() and enFlag)) then return 0 end 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 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 end
__e2setcost(20) __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 netWriteAngle = net and net.WriteAngle
local netWriteEntity = net and net.WriteEntity local netWriteEntity = net and net.WriteEntity
local netWriteVector = net and net.WriteVector local netWriteVector = net and net.WriteVector
local netWriteNormal = net and net.WriteNormal
local vguiCreate = vgui and vgui.Create local vguiCreate = vgui and vgui.Create
local stringUpper = string and string.upper local stringUpper = string and string.upper
local mathAbs = math and math.abs local mathAbs = math and math.abs
@ -141,6 +142,7 @@ TOOL.ClientConVar = {
[ "upspanchor" ] = 0, [ "upspanchor" ] = 0,
[ "crvturnlm" ] = 0.95, [ "crvturnlm" ] = 0.95,
[ "crvleanlm" ] = 0.95, [ "crvleanlm" ] = 0.95,
[ "crvsuprev" ] = 0.45,
[ "flipoverid" ] = "" [ "flipoverid" ] = ""
} }
@ -203,6 +205,10 @@ TOOL.Category = languageGetPhrase and languageGetPhrase("tool."..gsToolNameL..
TOOL.Command = nil -- Command on click (nil for default) TOOL.Command = nil -- Command on click (nil for default)
TOOL.ConfigName = nil -- Configure file name (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() function TOOL:GetCurveFactor()
return asmlib.GetAsmConvar("curvefact", "FLT") return asmlib.GetAsmConvar("curvefact", "FLT")
end end
@ -786,15 +792,15 @@ end
--[[ --[[
* Uses heuristics to provide the best suitable location the * Uses heuristics to provide the best suitable location the
* curve note closest location can be updated with. Three cases: * 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 * iD > Curve node index to be updated
* vPnt > The new location to update the node with * vPnt > The new location to update the node with
* bMute > Mute mode. Used to disable server status messages * bMute > Mute mode. Used to disable server status messages
* Returns multiple values: * Returns multiple values:
* 1. Curve node calculated heuristics location vector * V > Curve node calculated heuristics location vector
* 2. The amount of neighbor nodes that are active rays * 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) function TOOL:GetCurveNodeActive(iD, vPnt, bMute)
local user = self:GetOwner() local user = self:GetOwner()
@ -862,16 +868,25 @@ function TOOL:CurveClear(bAll, bMute)
tableRemove(tC.Rays) tableRemove(tC.Rays)
tableEmpty(tC.Snap); tC.SSize = 0 tableEmpty(tC.Snap); tC.SSize = 0
tableRemove(tC.Base); tC.Size = (tC.Size - 1) 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
end; return tC -- Returns the updated curve nodes table end; return tC -- Returns the updated curve nodes table
end 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) function TOOL:GetCurveTransform(stTrace, bPnt)
if(not stTrace) then if(not stTrace) then
asmlib.LogInstance("Trace missing", gtLogs); return nil end asmlib.LogInstance("Trace missing", gtLogs); return nil end
if(not stTrace.Hit) then if(not stTrace.Hit) then
asmlib.LogInstance("Trace not hit", gtLogs); return nil end asmlib.LogInstance("Trace not hit", gtLogs); return nil end
local user = self:GetOwner() local user, nT = self:GetOwner(), 0
local angsnap = self:GetAngSnap() local angsnap = self:GetAngSnap()
local elevpnt = self:GetElevation() local elevpnt = self:GetElevation()
local surfsnap = self:GetSurfaceSnap() 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.Orw:Set(tData.Org); tData.Anw:Set(tData.Ang) -- Transform of POA
tData.ID = oID; tData.Min = oMin -- Point ID and minimum distance tData.ID = oID; tData.Min = oMin -- Point ID and minimum distance
tData.POA = oPOA; tData.Rec = oRec -- POA and cache record 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 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 else -- Offset the curve node when it is not driven by an active point
tData.Org:Add(vNrm * elevpnt) -- Apply model active point elevation tData.Org:Add(vNrm * elevpnt) -- Apply model active point elevation
end -- Apply the positional and angular offsets to the return value 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:Right() * nexty)
tData.Org:Add(tData.Ang:Forward() * nextx) tData.Org:Add(tData.Ang:Forward() * nextx)
tData.Ang:RotateAroundAxis(tData.Ang:Up() ,-nextyaw) tData.Ang:RotateAroundAxis(tData.Ang:Up() ,-nextyaw)
@ -908,12 +928,58 @@ function TOOL:GetCurveTransform(stTrace, bPnt)
return tData return tData
end 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) function TOOL:CurveInsert(stTrace, bPnt, bMute)
local user, model = self:GetOwner(), self:GetModel() local user, model = self:GetOwner(), self:GetModel()
local tData = self:GetCurveTransform(stTrace, bPnt); if(not tData) then local tData = self:GetCurveTransform(stTrace, bPnt); if(not tData) then
asmlib.LogInstance("Transform missing", gtLogs); return nil end asmlib.LogInstance("Transform missing", gtLogs); return nil end
local tC = asmlib.GetCacheCurve(user); if(not tC) then local tC = asmlib.GetCacheCurve(user); if(not tC) then
asmlib.LogInstance("Curve missing", gtLogs); return nil end 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 tC.Size = (tC.Size + 1) -- Increment stack size. Adding stuff
tableInsert(tC.Node, Vector(tData.Org)) tableInsert(tC.Node, Vector(tData.Org))
tableInsert(tC.Norm, tData.Ang:Up()) tableInsert(tC.Norm, tData.Ang:Up())
@ -924,11 +990,13 @@ function TOOL:CurveInsert(stTrace, bPnt, bMute)
netStart(gsLibName.."SendCreateCurveNode") netStart(gsLibName.."SendCreateCurveNode")
netWriteEntity(user) netWriteEntity(user)
netWriteVector(tC.Node[tC.Size]) netWriteVector(tC.Node[tC.Size])
netWriteVector(tC.Norm[tC.Size]) netWriteNormal(tC.Norm[tC.Size])
netWriteVector(tC.Base[tC.Size]) netWriteVector(tC.Base[tC.Size])
netWriteVector(tC.Rays[tC.Size][1]) netWriteVector(tC.Rays[tC.Size][1])
netWriteAngle (tC.Rays[tC.Size][2]) netWriteAngle (tC.Rays[tC.Size][2])
netWriteBool (tC.Rays[tC.Size][3]) netWriteBool (tC.Rays[tC.Size][3])
netWriteUInt (iN, 16)
if(iN > 0) then netWriteNormal(vN) end
netSend(user) netSend(user)
user:SetNWBool(gsToolPrefL.."engcurve", true) user:SetNWBool(gsToolPrefL.."engcurve", true)
end end
@ -945,7 +1013,30 @@ function TOOL:CurveUpdate(stTrace, bPnt, bMute)
asmlib.Notify(user,"Populate nodes first !","ERROR") asmlib.Notify(user,"Populate nodes first !","ERROR")
asmlib.LogInstance("Nodes missing", gtLogs); return nil asmlib.LogInstance("Nodes missing", gtLogs); return nil
end end
local nrA = self:GetActiveRadius()
local mD, mL = asmlib.GetNearest(tData.Hit, tC.Base) 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.Node[mD]:Set(tData.Org)
tC.Norm[mD]:Set(tData.Ang:Up()) tC.Norm[mD]:Set(tData.Ang:Up())
tC.Base[mD]:Set(tData.Hit) 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][2]:Set(tData.Ang)
tC.Rays[mD][3] = (tData.POA ~= nil) tC.Rays[mD][3] = (tData.POA ~= nil)
-- Adjust node according to intersection -- 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) local xx = self:GetCurveNodeActive(mD, tData.Org)
if(xx) then if(xx) then
tC.Node[mD]:Set(xx) tC.Node[mD]:Set(xx)
@ -962,12 +1053,16 @@ function TOOL:CurveUpdate(stTrace, bPnt, bMute)
tC.Norm[mD]:Normalize() tC.Norm[mD]:Normalize()
end end
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 if(not bMute) then
asmlib.Notify(user, "Node ["..mD.."] updated !", "CLEANUP") asmlib.Notify(user, "Node ["..mD.."] updated !", "CLEANUP")
netStart(gsLibName.."SendUpdateCurveNode") netStart(gsLibName.."SendUpdateCurveNode")
netWriteEntity(user) netWriteEntity(user)
netWriteVector(tC.Node[mD]) netWriteVector(tC.Node[mD])
netWriteVector(tC.Norm[mD]) netWriteNormal(tC.Norm[mD])
netWriteVector(tC.Base[mD]) netWriteVector(tC.Base[mD])
netWriteVector(tC.Rays[mD][1]) netWriteVector(tC.Rays[mD][1])
netWriteAngle (tC.Rays[mD][2]) netWriteAngle (tC.Rays[mD][2])
@ -1182,19 +1277,18 @@ function TOOL:LeftClick(stTrace)
}, function(oPly, oArg) }, function(oPly, oArg)
for iD = oArg.stard, tC.SSize do tS = tC.Snap[iD] for iD = oArg.stard, tC.SSize do tS = tC.Snap[iD]
for iK = oArg.stark, tS.Size do local tV, ePiece = tS[iK], nil for iK = oArg.stark, tS.Size do local tV, ePiece = tS[iK], nil
oArg.spawn = asmlib.GetNormalSpawn(oPly, tV[1], tV[2], model, pointid, oArg.spawn = asmlib.GetNormalSpawn(oPly, tV[1], tV[2], model, pointid, 0, 0, 0, 0, 0, 0, oArg.spawn)
nextx, nexty, nextz, nextpic, nextyaw, nextrol, oArg.spawn)
if(not oArg.spawn) then -- Make sure it persists to set it afterwards 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 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(crvturnlm > 0 or crvleanlm > 0) then local nF, nU = asmlib.GetTurningFactor(oPly, tS, iK)
if(nF and nF < crvturnlm) then if(nF and nF < crvturnlm) then
oArg.mundo = asmlib.GetReport(iD, asmlib.GetNearest(tV[1], tC.Node), ("%4.3f"):format(nF)) 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 asmlib.LogInstance(self:GetStatus(stTrace,"("..oArg.wname..") "..oArg.mundo..": Turn excessive"), gtLogs); return false
end end
if(nU and nU < crvleanlm) then if(nU and nU < crvleanlm) then
oArg.mundo = asmlib.GetReport(iD, asmlib.GetNearest(tV[1], tC.Node),("%4.3f"):format(nU)) 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 asmlib.LogInstance(self:GetStatus(stTrace,"("..oArg.wname..") "..oArg.mundo..": Lean excessive"), gtLogs); return false
end end
end end
@ -1364,7 +1458,7 @@ function TOOL:LeftClick(stTrace)
end end
else -- Visual else -- Visual
local IDs = gsSymDir:Explode(bgskids) 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 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)) trEnt:SetSkin(mathClamp(tonumber(IDs[2]) or 0,0,trEnt:SkinCount()-1))
asmlib.LogInstance("(Bodygroup/Skin) Success",gtLogs) asmlib.LogInstance("(Bodygroup/Skin) Success",gtLogs)
@ -1521,18 +1615,6 @@ function TOOL:Reload(stTrace)
if(user:IsAdmin()) then if(user:IsAdmin()) then
if(self:GetDeveloperMode()) then if(self:GetDeveloperMode()) then
asmlib.SetLogControl(self:GetLogLines(),self:GetLogFile()) end 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 end
if(user:KeyDown(IN_SPEED)) then if(user:KeyDown(IN_SPEED)) then
if(workmode == 1) then if(workmode == 1) then
@ -1636,8 +1718,6 @@ function TOOL:UpdateGhostCurve()
local stackcnt = self:GetStackCount() local stackcnt = self:GetStackCount()
local pointid, pnextid = self:GetPointID() local pointid, pnextid = self:GetPointID()
local tGho, iGho = asmlib.GetOpVar("ARRAY_GHOST"), 0 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) local bCrv = user:GetNWBool(gsToolPrefL.."engcurve", false)
if(bCrv) then if(bCrv) then
local workmode = self:GetWorkingMode() local workmode = self:GetWorkingMode()
@ -1657,8 +1737,7 @@ function TOOL:UpdateGhostCurve()
for iD = 1, tCrv.SSize do local tS = tCrv.Snap[iD] for iD = 1, tCrv.SSize do local tS = tCrv.Snap[iD]
for iK = 1, tS.Size do iGho = (iGho + 1) for iK = 1, tS.Size do iGho = (iGho + 1)
local tV, eGho = tS[iK], tGho[iGho] local tV, eGho = tS[iK], tGho[iGho]
local stSpawn = asmlib.GetNormalSpawn(user, tV[1], tV[2], model, pointid, local stSpawn = asmlib.GetNormalSpawn(user, tV[1], tV[2], model, pointid, 0, 0, 0, 0, 0, 0)
nextx, nexty, nextz, nextpic, nextyaw, nextrol)
if(eGho and eGho:IsValid()) then eGho:SetNoDraw(true) if(eGho and eGho:IsValid()) then eGho:SetNoDraw(true)
if(stackcnt > 0) then if(iGho > stackcnt) then eGho:SetNoDraw(true) else 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 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 if(not tData) then asmlib.LogInstance("Transform missing", gtLogs); return end
local tC, nS = asmlib.GetCacheCurve(oPly), self:GetSizeUCS() local tC, nS = asmlib.GetCacheCurve(oPly), self:GetSizeUCS()
if(not tC) then asmlib.LogInstance("Curve missing", gtLogs); return end 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 xyO, xyH = tData.Org:ToScreen(), tData.Hit:ToScreen()
local xyZ = (tData.Org + nS * tData.Ang:Up()):ToScreen() local xyZ = (tData.Org + nS * tData.Ang:Up()):ToScreen()
local xyX = (tData.Org + nS * tData.Ang:Forward()):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 if(tC.Size and tC.Size > 0) then
for iD = 1, tC.Size do for iD = 1, tC.Size do
local rN = (iD == 1 and nrB or nrS) 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 nB = asmlib.GetViewRadius(oPly, vB, 2)
local nD = asmlib.GetViewRadius(oPly, vD, rN) local nD = asmlib.GetViewRadius(oPly, vD, rN)
local xyB, xyD = vB:ToScreen(), vD:ToScreen() local xyB, xyD = vB:ToScreen(), vD:ToScreen()
local xyN = (vD + nS * vN):ToScreen() local xyN = (vD + nS * vN):ToScreen()
local xyF = (vD + nS * tR[2]:Forward()):ToScreen()
oScreen:DrawLine(xyB, xyD, "y") oScreen:DrawLine(xyB, xyD, "y")
oScreen:DrawCircle(xyB, nB) oScreen:DrawCircle(xyB, nB)
oScreen:DrawCircle(xyD, nD) oScreen:DrawCircle(xyD, nD)
oScreen:DrawLine(xyF, xyD, "r")
oScreen:DrawLine(xyN, xyD, "b") oScreen:DrawLine(xyN, xyD, "b")
oScreen:DrawCircle(xyD, nD / 2, "r") oScreen:DrawCircle(xyD, nD / 2, "r")
if(tC.Node[iD - 1]) then if(tC.Node[iD - 1]) then
@ -1969,7 +2051,18 @@ function TOOL:DrawCurveNode(oScreen, oPly, stTrace)
if(bRp and mD) then if(bRp and mD) then
local xyN = tC.Node[mD]:ToScreen() local xyN = tC.Node[mD]:ToScreen()
oScreen:DrawLine(xyO, xyN, "r") 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) local xx, sx = self:GetCurveNodeActive(mD, tData.Org, true)
if(xx) then if(xx) then
local xyX = xx:ToScreen(); oScreen:DrawLine(xyX, xyO, "ry") local xyX = xx:ToScreen(); oScreen:DrawLine(xyX, xyO, "ry")
@ -2240,7 +2333,7 @@ function TOOL:DrawToolScreen(w, h)
local actrad = self:GetActiveRadius() local actrad = self:GetActiveRadius()
local pointid, pnextid = self:GetPointID() local pointid, pnextid = self:GetPointID()
local workmode, workname = self:GetWorkingMode() local workmode, workname = self:GetWorkingMode()
local trMaxCN, trModel, trOID, trRLen local trMID, trModel, trOID, trRLen
if(trEnt and trEnt:IsValid()) then if(trEnt and trEnt:IsValid()) then
if(asmlib.IsOther(trEnt)) then return end if(asmlib.IsOther(trEnt)) then return end
trModel = trEnt:GetModel() trModel = trEnt:GetModel()
@ -2256,7 +2349,7 @@ function TOOL:DrawToolScreen(w, h)
trRLen = mathRound(stSpawn.RLen,2) trRLen = mathRound(stSpawn.RLen,2)
end end
if(asmlib.IsHere(trRec)) then if(asmlib.IsHere(trRec)) then
trMaxCN = trRec.Size trMID = trRec.Size
trModel = stringGetFileName(trModel) trModel = stringGetFileName(trModel)
else trModel = "["..gsNoMD.."]"..stringGetFileName(trModel) end else trModel = "["..gsNoMD.."]"..stringGetFileName(trModel) end
end end
@ -2265,7 +2358,7 @@ function TOOL:DrawToolScreen(w, h)
maxrad = asmlib.GetAsmConvar("maxactrad", "FLT") maxrad = asmlib.GetAsmConvar("maxactrad", "FLT")
scrTool:DrawText("TM: " ..(trModel or gsNoAV),"y") scrTool:DrawText("TM: " ..(trModel or gsNoAV),"y")
scrTool:DrawText("HM: " ..(model or gsNoAV),"m") scrTool:DrawText("HM: " ..(model or gsNoAV),"m")
scrTool:DrawText("ID: ["..(trMaxCN or gsNoID) scrTool:DrawText("ID: ["..(trMID or gsNoID)
.."] " ..(trOID or gsNoID) .."] " ..(trOID or gsNoID)
.." >> "..(pointid or gsNoID) .." >> "..(pointid or gsNoID)
.. " (" ..(pnextid or gsNoID) .. " (" ..(pnextid or gsNoID)
@ -2290,7 +2383,6 @@ function TOOL.BuildCPanel(CPanel)
asmlib.SetAsmConvar(nil, "flipoverid") -- Reset flip-over mode on pickup asmlib.SetAsmConvar(nil, "flipoverid") -- Reset flip-over mode on pickup
CPanel:ClearControls(); CPanel:DockPadding(5, 0, 5, 10) CPanel:ClearControls(); CPanel:DockPadding(5, 0, 5, 10)
local drmSkin, sLog = CPanel:GetSkin(), "*TOOL.BuildCPanel" local drmSkin, sLog = CPanel:GetSkin(), "*TOOL.BuildCPanel"
local devmode = asmlib.GetAsmConvar("devmode", "BUL")
local nMaxLin = asmlib.GetAsmConvar("maxlinear","FLT") local nMaxLin = asmlib.GetAsmConvar("maxlinear","FLT")
local iMaxDec = asmlib.GetAsmConvar("maxmenupr","INT") local iMaxDec = asmlib.GetAsmConvar("maxmenupr","INT")
local sCall, pItem, sName, aData = "_cpan" -- pItem is the current panel created local sCall, pItem, sName, aData = "_cpan" -- pItem is the current panel created
@ -2304,13 +2396,11 @@ function TOOL.BuildCPanel(CPanel)
pComboPresets:AddConVar(val) end pComboPresets:AddConVar(val) end
CPanel:AddItem(pComboPresets) 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 asmlib.LogInstance("Panel population empty",sLog); return end
local makTab = asmlib.GetBuilderNick("PIECES"); if(not asmlib.IsHere(makTab)) then local makTab = asmlib.GetBuilderNick("PIECES"); if(not asmlib.IsHere(makTab)) then
asmlib.LogInstance("Missing builder table",sLog); return end asmlib.LogInstance("Missing builder table",sLog); return end
local defTable = makTab:GetDefinition() local pTree = vguiCreate("DTree", CPanel); if(not pTree) then
local catTypes = asmlib.GetOpVar("TABLE_CATEGORIES")
local pTree = vguiCreate("DTree", CPanel); if(not pTree) then
asmlib.LogInstance("Database tree empty",sLog); return end asmlib.LogInstance("Database tree empty",sLog); return end
pTree:Dock(TOP) -- Initialize to fill left and right bounds pTree:Dock(TOP) -- Initialize to fill left and right bounds
pTree:SetTall(400) -- Make it quite large pTree:SetTall(400) -- Make it quite large
@ -2318,73 +2408,56 @@ function TOOL.BuildCPanel(CPanel)
pTree:SetIndentSize(0) -- All track types are closed pTree:SetIndentSize(0) -- All track types are closed
pTree:UpdateColours(drmSkin) -- Apply current skin pTree:UpdateColours(drmSkin) -- Apply current skin
CPanel:AddItem(pTree) -- Register it to the panel CPanel:AddItem(pTree) -- Register it to the panel
local iCnt, iTyp, pTypes, pCateg, pNode = 1, 1, {}, {} local defTable = makTab:GetDefinition()
while(cqPanel[iCnt]) do local tType, tRoot = {}, {Size = 0}
local vRec, bNow = cqPanel[iCnt], true for iC = 1, qPanel.Size do
local sMod = vRec[makTab:GetColumnName(1)] local vRec, bNow = qPanel[iC], true
local sTyp = vRec[makTab:GetColumnName(2)] local sMod, sTyp, sNam = vRec.M, vRec.T, vRec.N
local sNam = vRec[makTab:GetColumnName(3)]
if(asmlib.IsModel(sMod)) then 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 local pRoot = pTree:AddNode(sTyp) -- No type folder made already
pRoot:SetTooltip(languageGetPhrase("tool."..gsToolNameL..".type")) pRoot:SetTooltip(languageGetPhrase("tool."..gsToolNameL..".type"))
pRoot.Icon:SetImage(asmlib.ToIcon(defTable.Name)) pRoot.Icon:SetImage(asmlib.ToIcon(defTable.Name))
pRoot.DoClick = function() asmlib.SetExpandNode(pRoot) end pRoot.DoClick = function() asmlib.SetNodeExpand(pRoot) end
pRoot.Expander.DoClick = function() asmlib.SetExpandNode(pRoot) end pRoot.Expander.DoClick = function() asmlib.SetNodeExpand(pRoot) end
pRoot.DoRightClick = function() pRoot.DoRightClick = function() asmlib.OpenNodeMenu(pRoot) end
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:UpdateColours(drmSkin) pRoot:UpdateColours(drmSkin)
pTypes[sTyp] = pRoot tType[sTyp] = {Base = pRoot, Node = {}}
end -- Reset the primary tree node pointer end -- Reset the primary tree node pointer
if(pTypes[sTyp]) then pItem = pTypes[sTyp] else pItem = pTree end if(tType[sTyp]) then pItem = tType[sTyp].Base else pItem = pTree end
-- Register the category if definition functional is given -- Register the node associated with the track piece when is intended for later
if(catTypes[sTyp]) then -- There is a category definition if(vRec.C and vRec.C.Size > 0) then -- When category for the track type is available
local bSuc, ptCat, psNam = pcall(catTypes[sTyp].Cmp, sMod) local tNode = tType[sTyp].Node -- Index the contend for the track type
if(bSuc) then -- When the call is successful in protected mode for iD = 1, vRec.C.Size do -- Generate the path to the track piece
if(psNam and not asmlib.IsBlank(psNam)) then local sCat = vRec.C[iD] -- Read the category name
sNam = asmlib.GetBeautifyName(psNam) local tCat = tNode[sCat] -- Index the internal sub-category
end -- Custom name override when the addon requests if(tCat) then -- Jump next if already created
local pCurr = pCateg[sTyp] pItem = tCat.Base -- Assume that the category is allocated
if(not asmlib.IsHere(pCurr)) then tNode = tCat.Node -- Jump to the next set of base nodes
pCateg[sTyp] = {}; pCurr = pCateg[sTyp] end else -- Create a new sub-category for the incoming content
if(asmlib.IsBlank(ptCat)) then ptCat = nil end tNode[sCat] = {}; tCat = tNode[sCat] -- Create node info
if(asmlib.IsHere(ptCat)) then pItem = asmlib.SetNodeDirectory(pItem, sCat) -- Create category
if(not istable(ptCat)) then ptCat = {ptCat} end tCat.Base = pItem; tCat.Node = {} -- Allocate node info
if(ptCat[1]) then local iD = 1 tNode = tCat.Node -- Jump to the allocated set of base nodes
while(ptCat[iD]) do local sCat = tostring(ptCat[iD]):lower():Trim() end -- Create the last needed node regarding pItem
if(asmlib.IsBlank(sCat)) then sCat = "other" end end -- When the category has at least one element
sCat = asmlib.GetBeautifyName(sCat) -- Beautify the category else -- Panel cannot categorize the entry add it to the list
if(pCurr[sCat]) then -- Jump next if already created tRoot.Size = tRoot.Size + 1 -- Increment count to avoid calling #
pCurr, pItem = asmlib.GetDirectory(pCurr, sCat) tableInsert(tRoot, iC); bNow = false -- Attach row ID to rooted items
else end -- When needs to be processed now just attach it to the tree
pCurr, pItem = asmlib.SetDirectory(pItem, pCurr, sCat) if(bNow) then asmlib.SetNodeContent(pItem, sNam, sMod) end
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
-- SnapReview is ignored because a query must be executed for points count -- SnapReview is ignored because a query must be executed for points count
else asmlib.LogInstance("Ignoring item "..asmlib.GetReport(sTyp, sNam, sMod),sLog) end else asmlib.LogInstance("Ignoring item "..asmlib.GetReport(sTyp, sNam, sMod),sLog) end
iCnt = iCnt + 1
end end
-- Attach the hanging items to the type root -- Attach the hanging items to the type root
for typ, val in pairs(pCateg) do for iR = 1, tRoot.Size do
for iD = 1, #val do local iRox = tRoot[iR]
local pan = pTypes[typ] local vRec = qPanel[iRox]
local nam, mod = unpack(val[iD]) local sMod, sTyp, sNam = vRec.M, vRec.T, vRec.N
asmlib.SetDirectoryNode(pan, nam, mod) asmlib.SetNodeContent(tType[sTyp].Base, sNam, sMod)
asmlib.LogInstance("Rooting item "..asmlib.GetReport(typ, nam, mod),sLog) asmlib.LogInstance("Rooting item "..asmlib.GetReport(sTyp, sNam, sMod), sLog)
end
end -- Process all the items without category defined 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 -- http://wiki.garrysmod.com/page/Category:DComboBox
local sName = asmlib.GetAsmConvar("workmode", "NAM") local sName = asmlib.GetAsmConvar("workmode", "NAM")
@ -2421,21 +2494,21 @@ function TOOL.BuildCPanel(CPanel)
pComboPhysName:SetTall(22) pComboPhysName:SetTall(22)
pComboPhysName:UpdateColours(drmSkin) 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 asmlib.LogInstance("Property population empty",sLog); return end
while(cqProperty[iTyp]) do for iP = 1, qProperty.Size do
local sT, sI = cqProperty[iTyp], asmlib.ToIcon("property_type") local sT, sI = qProperty[iP], asmlib.ToIcon("property_type")
pComboPhysType:AddChoice(sT, sT, false, sI); iTyp = iTyp + 1 pComboPhysType:AddChoice(sT, sT, false, sI)
end end
pComboPhysType.OnSelect = function(pnSelf, nInd, sVal, anyData) pComboPhysType.OnSelect = function(pnSelf, nInd, sVal, anyData)
local cqNames = asmlib.CacheQueryProperty(sVal) local qNames = asmlib.CacheQueryProperty(sVal)
if(cqNames) then local iNam = 1; pComboPhysName:Clear() if(qNames) then pComboPhysName:Clear()
pComboPhysName:SetValue(languageGetPhrase("tool."..gsToolNameL..".phyname_def")) pComboPhysName:SetValue(languageGetPhrase("tool."..gsToolNameL..".phyname_def"))
while(cqNames[iNam]) do for iNam = 1, qNames.Size do
local sN, sI = cqNames[iNam], asmlib.ToIcon("property_name") local sN, sI = qNames[iNam], asmlib.ToIcon("property_name")
pComboPhysName:AddChoice(sN, sN, false, sI); iNam = iNam + 1 pComboPhysName:AddChoice(sN, sN, false, sI)
end end
else asmlib.LogInstance("Property type <"..sVal.."> names mismatch",sLog) end else asmlib.LogInstance("Property type <"..sVal.."> names mismatch",sLog) end
end end
@ -2443,7 +2516,7 @@ function TOOL.BuildCPanel(CPanel)
cvarsRemoveChangeCallback(sName, sName..sCall) cvarsRemoveChangeCallback(sName, sName..sCall)
cvarsAddChangeCallback(sName, function(sV, vO, vN) cvarsAddChangeCallback(sName, function(sV, vO, vN)
pComboPhysName:SetValue(vN) end, sName..sCall); pComboPhysName:SetValue(vN) end, sName..sCall);
asmlib.LogTable(cqProperty, "Property", sLog) asmlib.LogTable(qProperty, "Property", sLog)
-- http://wiki.garrysmod.com/page/Category:DTextEntry -- http://wiki.garrysmod.com/page/Category:DTextEntry
local sName = asmlib.GetAsmConvar("bgskids", "NAM") local sName = asmlib.GetAsmConvar("bgskids", "NAM")
@ -2511,6 +2584,7 @@ if(CLIENT) then
asmlib.SetNumSlider(CPanel, "ghostblnd", iMaxDec) asmlib.SetNumSlider(CPanel, "ghostblnd", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvturnlm", iMaxDec) asmlib.SetNumSlider(CPanel, "crvturnlm", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvleanlm", iMaxDec) asmlib.SetNumSlider(CPanel, "crvleanlm", iMaxDec)
asmlib.SetNumSlider(CPanel, "crvsuprev", iMaxDec)
asmlib.SetNumSlider(CPanel, "sgradmenu", 0) asmlib.SetNumSlider(CPanel, "sgradmenu", 0)
asmlib.SetNumSlider(CPanel, "rtradmenu", iMaxDec) asmlib.SetNumSlider(CPanel, "rtradmenu", iMaxDec)
asmlib.SetCheckBox(CPanel, "enradmenu") asmlib.SetCheckBox(CPanel, "enradmenu")
@ -2518,7 +2592,8 @@ if(CLIENT) then
asmlib.LogInstance("Registered as "..asmlib.GetReport(CPanel.Name), sLog) asmlib.LogInstance("Registered as "..asmlib.GetReport(CPanel.Name), sLog)
end 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 -- Enter `spawnmenu_reload` in the console to reload the panel
local function setupAdminSettings(CPanel) local function setupAdminSettings(CPanel)
@ -2668,6 +2743,7 @@ if(CLIENT) then
asmlib.SetAsmConvar(user, "endsvlock", asmlib.GetAsmConvar("endsvlock", "DEF")) asmlib.SetAsmConvar(user, "endsvlock", asmlib.GetAsmConvar("endsvlock", "DEF"))
asmlib.SetAsmConvar(user, "curvefact", asmlib.GetAsmConvar("curvefact", "DEF")) asmlib.SetAsmConvar(user, "curvefact", asmlib.GetAsmConvar("curvefact", "DEF"))
asmlib.SetAsmConvar(user, "curvsmple", asmlib.GetAsmConvar("curvsmple", "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, "spawnrate", asmlib.GetAsmConvar("spawnrate", "DEF"))
asmlib.SetAsmConvar(user, "bnderrmod", asmlib.GetAsmConvar("bnderrmod", "DEF")) asmlib.SetAsmConvar(user, "bnderrmod", asmlib.GetAsmConvar("bnderrmod", "DEF"))
asmlib.SetAsmConvar(user, "maxfruse" , asmlib.GetAsmConvar("maxfruse" , "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) asmlib.LogInstance("Registered as "..asmlib.GetReport(CPanel.Name), sLog)
end 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 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) * [RockMan's Fortification](https://steamcommunity.com/sharedfiles/filedetails/?id=3071058065)
* [SligWolf's Suspension train](https://steamcommunity.com/sharedfiles/filedetails/?id=3297918081) [**(AUTHOR)**][ref-maintained] * [SligWolf's Suspension train](https://steamcommunity.com/sharedfiles/filedetails/?id=3297918081) [**(AUTHOR)**][ref-maintained]
* [Modular City Street](https://steamcommunity.com/sharedfiles/filedetails/?id=3314861708) * [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? #### 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 Dude seriously, make them yourself, what's the point of playing Gmod then ... xD

View File

@ -1,9 +1,88 @@
 
tool.trackassembly.workmode.1=Обикновено създаване/залепяне Cleaned_asmtracks=Всички парчета трасе са почистени
tool.trackassembly.workmode.2=Пресичане на активни точки Cleanup_asmtracks=Сглобени парчета трасе
tool.trackassembly.workmode.3=Линейна сегментна интерполация SBoxLimit_asmtracks=Достигнахте границата на създадените парчета трасе!
tool.trackassembly.workmode.4=Преобръщане спрямо нормалата sbox_maxasmtracks=Променете тук за да настроите нещата които са създадени от инструмента на сървъра
tool.trackassembly.workmode.5=Преход на завой по допирателна 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.1=Създава парчета върху картата или ги сглобява едно спрямо друго
tool.trackassembly.info.2=Свързва секциите на трасето със специален сегмент проектиран за това tool.trackassembly.info.2=Свързва секциите на трасето със специален сегмент проектиран за това
tool.trackassembly.info.3=Създава непрекъснати трасета преминаващи през дадени контролни точки tool.trackassembly.info.3=Създава непрекъснати трасета преминаващи през дадени контролни точки
@ -14,16 +93,125 @@ tool.trackassembly.left.2=Създаване на парче в пресечен
tool.trackassembly.left.3=Създаване на интерполирана крива на трасе от предмети tool.trackassembly.left.3=Създаване на интерполирана крива на трасе от предмети
tool.trackassembly.left.4=Създаване на огледалните парчета на избрания списък tool.trackassembly.left.4=Създаване на огледалните парчета на избрания списък
tool.trackassembly.left.5=Създаване на интерполирана крива на трасе от предмети tool.trackassembly.left.5=Създаване на интерполирана крива на трасе от предмети
tool.trackassembly.right.1=Копиране на модела на парчето или отваряне на чести записи tool.trackassembly.logfile=Когато е включено започва да пише лог поток в специален файл
tool.trackassembly.right.2=Копиране на модела на парчето или отваряне на чести записи tool.trackassembly.logfile_con=Включи лог файла
tool.trackassembly.right.3=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите tool.trackassembly.logsmax=Променете тук за да настроите максималните линии за дължина на лога
tool.trackassembly.right.4=Регистриране на предмет в списъка за обръщане. Задръжте SHIFT за смяна на модела tool.trackassembly.logsmax_con=Дължина на лога\:
tool.trackassembly.right.5=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите tool.trackassembly.mass=Колко тежко ще бъде създаденото парче
tool.trackassembly.right_use.1=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи tool.trackassembly.mass_con=Маса на парчето\:
tool.trackassembly.right_use.2=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи tool.trackassembly.maxactrad=Променете тук за да настроите максималния радиус за взимане на индекс за снаждане
tool.trackassembly.right_use.3=Генериране на възел от най-близката активна точка на парчето tool.trackassembly.maxactrad_con=Граница на радиус\:
tool.trackassembly.right_use.4=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи tool.trackassembly.maxforce=Променете тук за да настроите максималната сила при на заварките
tool.trackassembly.right_use.5=Генериране на възел от най-близката активна точка на парчето 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.1=Премахване на парче трасе. Задръжте SHIFT за да изберете опора
tool.trackassembly.reload.2=Премахване на парче трасе. Задръжте SHIFT изберете релационен лъч tool.trackassembly.reload.2=Премахване на парче трасе. Задръжте SHIFT изберете релационен лъч
tool.trackassembly.reload.3=Премахване на възел от интерполираната крива. Задръжте 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.3=Позволете експорт на данните за да отворите DSV мениджър
tool.trackassembly.reload_use.4=Позволете експорт на данните за да отворите DSV мениджър tool.trackassembly.reload_use.4=Позволете експорт на данните за да отворите DSV мениджър
tool.trackassembly.reload_use.5=Позволете експорт на данните за да отворите 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=Цъкнете за да нулирате допълнителните стойности
tool.trackassembly.resetvars_con=V Нулиране на променливите V tool.trackassembly.resetvars_con=V Нулиране на променливите V
tool.trackassembly.nextpic=Допълнително отместване на началото по тангаж tool.trackassembly.right.1=Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.nextpic_con=Тангаж на началото\: tool.trackassembly.right.2=Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.nextyaw=Допълнително отместване на началото по азимут tool.trackassembly.right.3=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите
tool.trackassembly.nextyaw_con=Азимут на началото\: tool.trackassembly.right.4=Регистриране на предмет в списъка за обръщане. Задръжте SHIFT за смяна на модела
tool.trackassembly.nextrol=Допълнително отместване на началото по крен tool.trackassembly.right.5=Създаване на възел за сегментна крива. Задръжте SHIFT да обновите
tool.trackassembly.nextrol_con=Крен на началото\: tool.trackassembly.right_use.1=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.nextx=Допълнително отместване на началото по абсциса tool.trackassembly.right_use.2=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.nextx_con=Отместване по абсциса\: tool.trackassembly.right_use.3=Генериране на възел от най-близката активна точка на парчето
tool.trackassembly.nexty=Допълнително отместване на началото по ордината tool.trackassembly.right_use.4=Забранен SCROLL. Копиране на модела на парчето или отваряне на чести записи
tool.trackassembly.nexty_con=Отместване по ордината\: tool.trackassembly.right_use.5=Генериране на възел от най-близката активна точка на парчето
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.rtradmenu=Променете за да настроите базовия ъгъл на кръговото меню и да преместите опциите tool.trackassembly.rtradmenu=Променете за да настроите базовия ъгъл на кръговото меню и да преместите опциите
tool.trackassembly.rtradmenu_con=Радиална ротация\: tool.trackassembly.rtradmenu_con=Радиална ротация\:
tool.trackassembly.enpntmscr=Когато се разреши позволява превключване на активните точки чрез скрола на мишката tool.trackassembly.sgradmenu=Променете за да направите на кръговото меню по-гладко. По-голяма стойност за по-гладко
tool.trackassembly.enpntmscr_con=Разреши скрола за точките tool.trackassembly.sgradmenu_con=Радиални сегменти\:
tool.trackassembly.exportdb=Когато се пусне разрешава експортирането на базата данни в един голям файл tool.trackassembly.sizeucs=Мащаб за показваните координатни системи
tool.trackassembly.exportdb_con=Разреши експорт на базата данни tool.trackassembly.sizeucs_con=Мащаб UCS\:
tool.trackassembly.devmode=Когато се разреши пуска режим на разработчик за анализ и дебъг на грешки tool.trackassembly.spawncn=Създава парчето в центъра иначе спрямо избраната активна точка
tool.trackassembly.devmode_con=Включи режим на разработчик tool.trackassembly.spawncn_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.spawnrate=Променете тук за да настроите броя сегменти създадени за един сървърен тик tool.trackassembly.spawnrate=Променете тук за да настроите броя сегменти създадени за един сървърен тик
tool.trackassembly.spawnrate_con=Ставка на създаване\: tool.trackassembly.spawnrate_con=Ставка на създаване\:
tool.trackassembly.bnderrmod=Променете тук за да дефинирате поведение когато клиентите създават парчета извън картата tool.trackassembly.spnflat=Следващото парче ще бъде създадено/залепено/натрупано хоризонтално
tool.trackassembly.bnderrmod_off=Разрешено натрупване/създаване без граници tool.trackassembly.spnflat_con=Създай хоризонтално
tool.trackassembly.bnderrmod_log=Забранено натрупване/създаване грешката е записана tool.trackassembly.stackcnt=Максимален брой парчета които може да се създадат при натрупване
tool.trackassembly.bnderrmod_hint=Забранено натрупване/създаване подсказка е изобразена tool.trackassembly.stackcnt_con=Брой парчета\:
tool.trackassembly.bnderrmod_generic=Забранено натрупване/създаване съобщение е изписано tool.trackassembly.subfolder=Изберете категорията трасе която да използвате като разширите папката
tool.trackassembly.bnderrmod_error=Забранено натрупване/създаване грешка е показана tool.trackassembly.subfolder_con=Категория трасе\:
tool.trackassembly.bnderrmod_con=Режим на ограничение\: tool.trackassembly.surfsnap=Залепи парчето по повърхнината към която сочи потребителя
tool.trackassembly.modedb=Променете тук за да дефинирате поведението при съхранение на базата данни tool.trackassembly.surfsnap_con=Залепи по повърхнината
tool.trackassembly.modedb_lua=Използвайте директно съхранение в кеша
tool.trackassembly.modedb_sql=Кеширане само на заявените записи
tool.trackassembly.modedb_con=Режим на базата\:
tool.trackassembly.maxfruse=Променете тук за да настроите дълбочината на често срещаните парчета в списъка
tool.trackassembly.maxfruse_con=Чести парчета\:
tool.trackassembly.timermode_ap=Кликнете за да приложите избраните настройки върху мениджъра на паметта tool.trackassembly.timermode_ap=Кликнете за да приложите избраните настройки върху мениджъра на паметта
tool.trackassembly.timermode_ap_con=Приложи паметни настройки tool.trackassembly.timermode_ap_con=Приложи паметни настройки
tool.trackassembly.timermode_md=Променете тук за да изберете алгоритъм за таймера на мениджъра на паметта tool.trackassembly.timermode_cqt=Кеш таймер по заявка на запис
tool.trackassembly.timermode_lf=Променете тук за да настроите времето което всеки запис прекарва в кеша
tool.trackassembly.timermode_lf_con=Живот на записа\:
tool.trackassembly.timermode_rd=Когато е включено намазва кеша като записва празна стойност
tool.trackassembly.timermode_rd_con=Включи триене на записи
tool.trackassembly.timermode_ct=Когато е включено пуска почистването на боклука след всяко триене tool.trackassembly.timermode_ct=Когато е включено пуска почистването на боклука след всяко триене
tool.trackassembly.timermode_ct_con=Включи почистване на боклука 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_mem=Мениджър на паметта за SQL таблица\:
tool.trackassembly.timermode_cqt=Кеш таймер по заявка на запис
tool.trackassembly.timermode_obj=Таймерен обект закачен за запис tool.trackassembly.timermode_obj=Таймерен обект закачен за запис
tool.trackassembly.factory_reset=Кликнете за да приложите фабрични настройки на конзолните променливи tool.trackassembly.timermode_rd=Когато е включено намазва кеша като записва празна стойност
tool.trackassembly.factory_reset_con=Приложи фабрични настройки tool.trackassembly.timermode_rd_con=Включи триене на записи
tool.trackassembly.logfile=Когато е включено започва да пише лог поток в специален файл tool.trackassembly.type=Изберете типа трасе което да използвате като разширите папката
tool.trackassembly.logfile_con=Включи лог файла tool.trackassembly.type_con=Тип трасе\:
tool.trackassembly.logsmax=Променете тук за да настроите максималните линии за дължина на лога tool.trackassembly.upspanchor=Включете за обновяване на опората при всяко създаване без натрупвате
tool.trackassembly.logsmax_con=Дължина на лога\: tool.trackassembly.upspanchor_con=Обнови опората при създаване
tool.trackassembly.client_var=Клиентски предпочитания на играча. Променливи създадени чрез инструмента конфигурация
tool.trackassembly.nonrep_var=Контроли за не-репликирани променливи. Приемат различни стойности на сървъра и клиента
tool.trackassembly.relica_var=Контроли за репликирани променливи. Сървъра изпраща базова стойност до всички клиенти
tool.trackassembly.utilities_user=Потребителски настройки
tool.trackassembly.utilities_admin=Администраторски настройки tool.trackassembly.utilities_admin=Администраторски настройки
tool.trackassembly.buttonas<>=Намали/Увеличи tool.trackassembly.utilities_user=Потребителски настройки
tool.trackassembly.buttonas+/-=Обърни знака tool.trackassembly.weld=Създава заварки между парчетата или парчета/опора
tool.trackassembly.buttonas@M=Запомни стойност tool.trackassembly.weld_con=Създай заварка
tool.trackassembly.buttonas@D=Дефолтна стойност tool.trackassembly.workmode.1=Обикновено създаване/залепяне
tool.trackassembly.buttonas@=Приложи стойност\: tool.trackassembly.workmode.2=Пресичане на активни точки
sbox_maxasmtracks=Променете тук за да настроите нещата които са създадени от инструмента на сървъра tool.trackassembly.workmode.3=Линейна сегментна интерполация
sbox_maxasmtracks_con=Общо сегменти\: tool.trackassembly.workmode.4=Преобръщане спрямо нормалата
Cleanup_asmtracks=Сглобени парчета трасе tool.trackassembly.workmode.5=Преход на завой по допирателна
Cleaned_asmtracks=Всички парчета трасе са почистени tool.trackassembly.workmode=Сменете тази опция за да изберете различен режим на работа
SBoxLimit_asmtracks=Достигнахте границата на създадените парчета трасе! tool.trackassembly.workmode_con=Работен режим\:

View File

@ -1,9 +1,88 @@
 
tool.trackassembly.workmode.1=General spawn/snap pieces Cleaned_asmtracks=Cleaned up all track pieces
tool.trackassembly.workmode.2=Active point intersection Cleanup_asmtracks=Assembled track pieces
tool.trackassembly.workmode.3=Curve line segment fitting SBoxLimit_asmtracks=You've hit the spawned tracks limit!
tool.trackassembly.workmode.4=Surface normal flip over sbox_maxasmtracks=Change this to adjust the things spawned via track assembly tool on the server
tool.trackassembly.workmode.5=Tangent transition turns 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.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.2=Connects track sections with dedicated segment designed for that
tool.trackassembly.info.3=Creates continuous track layouts passing through given checkpoints 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.3=Spawn segmented track interpolation curve
tool.trackassembly.left.4=Spawn flipped over list of tracks selected tool.trackassembly.left.4=Spawn flipped over list of tracks selected
tool.trackassembly.left.5=Spawn segmented track interpolation curve tool.trackassembly.left.5=Spawn segmented track interpolation curve
tool.trackassembly.right.1=Copy track piece model or open frequent pieces frame tool.trackassembly.logfile=When enabled starts streaming the log into dedicated file
tool.trackassembly.right.2=Copy track piece model or open frequent pieces frame tool.trackassembly.logfile_con=Enable logging file
tool.trackassembly.right.3=Create node for the segmented curve. Hold SHIFT to update tool.trackassembly.logsmax=Change this to adjust the log streaming maximum output lines written
tool.trackassembly.right.4=Register entity in the flip over list. Hold SHIFT to change model tool.trackassembly.logsmax_con=Logging lines\:
tool.trackassembly.right.5=Create node for the segmented curve. Hold SHIFT to update tool.trackassembly.mass=How heavy the piece spawned will be
tool.trackassembly.right_use.1=Disabled SCROLL. Copy track piece model or open frequent pieces frame tool.trackassembly.mass_con=Piece mass\:
tool.trackassembly.right_use.2=Disabled SCROLL. Copy track piece model or open frequent pieces frame tool.trackassembly.maxactrad=Change this to adjust the maximum active radius for obtaining point ID
tool.trackassembly.right_use.3=Generate node from the nearest track piece active point tool.trackassembly.maxactrad_con=Radius limit\:
tool.trackassembly.right_use.4=Disabled SCROLL. Copy track piece model or open frequent pieces frame tool.trackassembly.maxforce=Change this to adjust the maximum force limit when creating welds
tool.trackassembly.right_use.5=Generate node from the nearest track piece active point 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.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.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 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.3=Enable database export to open DSV manager
tool.trackassembly.reload_use.4=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.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=Click to reset the additional values
tool.trackassembly.resetvars_con=V Reset variables V tool.trackassembly.resetvars_con=V Reset variables V
tool.trackassembly.nextpic=Additional origin angular pitch offset tool.trackassembly.right.1=Copy track piece model or open frequent pieces frame
tool.trackassembly.nextpic_con=Origin pitch\: tool.trackassembly.right.2=Copy track piece model or open frequent pieces frame
tool.trackassembly.nextyaw=Additional origin angular yaw offset tool.trackassembly.right.3=Create node for the segmented curve. Hold SHIFT to update
tool.trackassembly.nextyaw_con=Origin yaw\: tool.trackassembly.right.4=Register entity in the flip over list. Hold SHIFT to change model
tool.trackassembly.nextrol=Additional origin angular roll offset tool.trackassembly.right.5=Create node for the segmented curve. Hold SHIFT to update
tool.trackassembly.nextrol_con=Origin roll\: tool.trackassembly.right_use.1=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.nextx=Additional origin linear X offset tool.trackassembly.right_use.2=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.nextx_con=Offset X\: tool.trackassembly.right_use.3=Generate node from the nearest track piece active point
tool.trackassembly.nexty=Additional origin linear Y offset tool.trackassembly.right_use.4=Disabled SCROLL. Copy track piece model or open frequent pieces frame
tool.trackassembly.nexty_con=Offset Y\: tool.trackassembly.right_use.5=Generate node from the nearest track piece active point
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.rtradmenu=Change this to adjust the radial menu base angle and relocate its options tool.trackassembly.rtradmenu=Change this to adjust the radial menu base angle and relocate its options
tool.trackassembly.rtradmenu_con=Radial rotation\: tool.trackassembly.rtradmenu_con=Radial rotation\:
tool.trackassembly.enpntmscr=When enabled turns on the switching active points via mouse scroll tool.trackassembly.sgradmenu=Change this to make the radial menu more round. The higher the smoother
tool.trackassembly.enpntmscr_con=Enable point scroll tool.trackassembly.sgradmenu_con=Radial segments\:
tool.trackassembly.exportdb=When enabled turns on the database export as one large file tool.trackassembly.sizeucs=Scale set for the coordinate systems displayed
tool.trackassembly.exportdb_con=Enable database export tool.trackassembly.sizeucs_con=Scale UCS\:
tool.trackassembly.devmode=When enabled turns on the developer mode for tracking and debugging tool.trackassembly.spawncn=Spawns the piece at the center, else spawns relative to the active point chosen
tool.trackassembly.devmode_con=Enable developer mode tool.trackassembly.spawncn_con=Origin from center
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.spawnrate=Change this to adjust the amount of track segments spawned per server tick tool.trackassembly.spawnrate=Change this to adjust the amount of track segments spawned per server tick
tool.trackassembly.spawnrate_con=Spawning rate\: 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.spnflat=The next piece will be spawned/snapped/stacked horizontally
tool.trackassembly.bnderrmod_off=Allow stack/spawn without restriction tool.trackassembly.spnflat_con=Spawn horizontally
tool.trackassembly.bnderrmod_log=Deny stack/spawn the error is logged tool.trackassembly.stackcnt=Maximum number of pieces to create while stacking
tool.trackassembly.bnderrmod_hint=Deny stack/spawn hint message is displayed tool.trackassembly.stackcnt_con=Pieces count\:
tool.trackassembly.bnderrmod_generic=Deny stack/spawn generic message is displayed tool.trackassembly.subfolder=Select the track category to use by expanding the folder
tool.trackassembly.bnderrmod_error=Deny stack/spawn error message is displayed tool.trackassembly.subfolder_con=Track category\:
tool.trackassembly.bnderrmod_con=Bounding mode\: tool.trackassembly.surfsnap=Snaps the piece to the surface the player is pointing at
tool.trackassembly.modedb=Change this to define the storage behavior of the track database tool.trackassembly.surfsnap_con=Snap to trace surface
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.timermode_ap=Click this to apply your changes to the SQL memory manager configuration 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_ap_con=Apply memory settings
tool.trackassembly.timermode_md=Change this to adjust the timer algorithm of the SQL memory manager tool.trackassembly.timermode_cqt=Cache query timer via record request
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_ct=When enabled forces the garbage collection to run on record deletion 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_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_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.timermode_obj=Object timer attached to cache record
tool.trackassembly.factory_reset=Click this to apply console variables factory settings tool.trackassembly.timermode_rd=When enabled wipes the record from the cache by forcing a nil value
tool.trackassembly.factory_reset_con=Apply factory settings tool.trackassembly.timermode_rd_con=Enable record deletion
tool.trackassembly.logfile=When enabled starts streaming the log into dedicated file tool.trackassembly.type=Select the track type to use by expanding the folder
tool.trackassembly.logfile_con=Enable logging file tool.trackassembly.type_con=Track type\:
tool.trackassembly.logsmax=Change this to adjust the log streaming maximum output lines written tool.trackassembly.upspanchor=Enable to update the anchor on every spawn when not snapping
tool.trackassembly.logsmax_con=Logging lines\: tool.trackassembly.upspanchor_con=Update anchor on spawn
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.utilities_admin=Admin settings setup tool.trackassembly.utilities_admin=Admin settings setup
tool.trackassembly.buttonas<>=Decrement/Increment tool.trackassembly.utilities_user=User settings setup
tool.trackassembly.buttonas+/-=Negate value tool.trackassembly.weld=Creates welds between pieces or pieces/anchor
tool.trackassembly.buttonas@M=Memorize value tool.trackassembly.weld_con=Weld
tool.trackassembly.buttonas@D=Default value tool.trackassembly.workmode.1=General spawn/snap pieces
tool.trackassembly.buttonas@=Apply value\: tool.trackassembly.workmode.2=Active point intersection
sbox_maxasmtracks=Change this to adjust the things spawned via track assembly tool on the server tool.trackassembly.workmode.3=Curve line segment fitting
sbox_maxasmtracks_con=Total segments\: tool.trackassembly.workmode.4=Surface normal flip over
Cleanup_asmtracks=Assembled track pieces tool.trackassembly.workmode.5=Tangent transition turns
Cleaned_asmtracks=Cleaned up all track pieces tool.trackassembly.workmode=Change this option to select a different working mode
SBoxLimit_asmtracks=You've hit the spawned tracks limit! 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 Cleaned_asmtracks=Pistes nettoyées
tool.trackassembly.workmode.2=Point d'intersection actif Cleanup_asmtracks=Pièces de piste assemblées
tool.trackassembly.workmode.3=Ajuster des segments de ligne courbés SBoxLimit_asmtracks=Vous avez atteint la limite des pistes créées!
tool.trackassembly.workmode.4=Retourner la normale d'une surface 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.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.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.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.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.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.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.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.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.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.logfile=Commence la diffusion du journal dans un fichier dédié
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.logfile_con=Activer le journal
tool.trackassembly.right.3=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser tool.trackassembly.logsmax=Changer ceci pour ajuster le flux maximum des lignes écrites par le journal
tool.trackassembly.right.4=Enregistrer l'entité dans la liste à retourner. Maintenir MAJUSCULE pour changer le modèle tool.trackassembly.logsmax_con=Lignes maximum\:
tool.trackassembly.right.5=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser tool.trackassembly.mass=À quel point la pièce créée sera lourd
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.mass_con=Masse de la pièce\:
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.maxactrad=Changer ceci pour ajuster le rayon actif maximal pour obtenir l'ID d'un point
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.maxactrad_con=Limite du rayon\:
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.maxforce=Changer ceci pour ajuster la limite maximale de la force lors des soudures
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.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.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.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 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.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.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.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=Cliquez pour réinitialiser les valeurs supplémentaires
tool.trackassembly.resetvars_con=V Réinitialiser les variables V 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.right.1=Copier le modèle de la pièce de piste ou ouvrir la fenêtre des pièces fréquentes
tool.trackassembly.nextpic_con=Angle du tangage\: 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.nextyaw=Décalage angulaire supplémentaire sur la position initial du lacet tool.trackassembly.right.3=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser
tool.trackassembly.nextyaw_con=Angle du lacet\: tool.trackassembly.right.4=Enregistrer l'entité dans la liste à retourner. Maintenir MAJUSCULE pour changer le modèle
tool.trackassembly.nextrol=Décalage angulaire supplementaire sur la position initial du roulis tool.trackassembly.right.5=Créer un nœud pour la courbe segmentée. Maintenir MAJUSCULE pour réactualiser
tool.trackassembly.nextrol_con=Angle du roulis\: 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.nextx=Décalage linéaire supplémentaire sur la position initial de X 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.nextx_con=Décalage en X\: 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.nexty=Décalage linéaire supplémentaire sur la position initial de Y 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.nexty_con=Décalage en Y\: 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.nextz=Décalage linéaire supplémentaire sur la position initial de Z tool.trackassembly.rtradmenu=Modifiez ceci pour ajuster l'angle de base du menu radial et repositionner ses options
tool.trackassembly.nextz_con=Décalage en Z\: tool.trackassembly.rtradmenu_con=Rotation radiale\:
tool.trackassembly.gravity=Contrôle la gravité sur la pièce créée tool.trackassembly.sgradmenu=Modifiez ceci pour rendre le menu radial plus arrondi. Plus la valeur est élevée, plus c'est lisse
tool.trackassembly.gravity_con=Appliquer la gravité sur la pièce tool.trackassembly.sgradmenu_con=Segments radiaux\:
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.sizeucs=Calibration de l'échelle pour le système de coordonnées affiché tool.trackassembly.sizeucs=Calibration de l'échelle pour le système de coordonnées affiché
tool.trackassembly.sizeucs_con=Échelle UCS\: 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.spawncn=Créer la pièce vers le centre, sinon, la créer relativement vers le point active choisi
tool.trackassembly.maxstatts_con=Tentatives d'empilement\: tool.trackassembly.spawncn_con=Partir du centre
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.spawnrate=Changer ceci pour ajuster la quantité de segments de pistes créés par cycle de serveur 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.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.spnflat=La prochaine pièce sera créée/alignée/empilé horizontalement
tool.trackassembly.bnderrmod_off=[1] Autoriser l'empilement/création sans restriction tool.trackassembly.spnflat_con=Créer horizontalement
tool.trackassembly.bnderrmod_log=[2] Refuser l'empilement/création l'erreur est enregistré tool.trackassembly.stackcnt=Nombre maximum de pièces à créer pendant l'empilement
tool.trackassembly.bnderrmod_hint=[3] Refuser l'empilement/création message d'astuce est affiché tool.trackassembly.stackcnt_con=Nombre de pièces\:
tool.trackassembly.bnderrmod_generic=[4] Refuser l'empilement/création message générique est affiché tool.trackassembly.subfolder=Sélectionnez la catégorie de piste à utiliser en développant le dossier
tool.trackassembly.bnderrmod_error=[5] Refuser l'empilement/création message d'erreur est affiché tool.trackassembly.subfolder_con=Catégorie de piste\:
tool.trackassembly.bnderrmod_con=Sécurité frontière\: tool.trackassembly.surfsnap=Aligne la pièce vers la surface auquel le joueur vise actuellement
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.surfsnap_con=Aligner vers la surface tracé
tool.trackassembly.maxfruse_con=Pièces fréquentes\:
tool.trackassembly.timermode_ap=Cliquer ici pour appliquer vos changements au gestionnaire de mémoire SQL 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_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_cqt=Mettre en cache la minuterie de la requête via l'enregistrement de la requête
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_ct=Force l'exécution du recyclage de la mémoire lorsqu'une entrée est supprimée 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_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_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.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.timermode_rd=Efface les entrées du cache en forçant une valeur nulle
tool.trackassembly.logfile_con=Activer le journal tool.trackassembly.timermode_rd_con=Activer la suppression des entrées
tool.trackassembly.logsmax=Changer ceci pour ajuster le flux maximum des lignes écrites par le journal tool.trackassembly.type=Sélectionnez le type de piste à utiliser en développant le dossier
tool.trackassembly.logsmax_con=Lignes maximum\: tool.trackassembly.type_con=Type de piste\:
sbox_maxasmtracks=Changer ceci pour ajuster les choses créées par l'outil assembleur à piste sur le serveur tool.trackassembly.upspanchor=Activer pour mettre à jour l'ancrage à chaque apparition sans ajustement
sbox_maxasmtracks_con=Quantité de rails\: tool.trackassembly.upspanchor_con=Mettre à jour l'ancrage à l'apparition
Cleanup_asmtracks=Pièces de piste assemblées tool.trackassembly.utilities_admin=Configuration des paramètres administrateur
Cleaned_asmtracks=Pistes nettoyées tool.trackassembly.utilities_user=Configuration des paramètres utilisateur
SBoxLimit_asmtracks=Vous avez atteint la limite des pistes créées! 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=通常部分のスポーン/スナップ Cleaned_asmtracks=線路部分全部綺麗にした
tool.trackassembly.workmode.2=アクティブポイントの交差点 Cleanup_asmtracks=組み立てた線路部分
tool.trackassembly.workmode.3=曲線線分フィッティング SBoxLimit_asmtracks=スポーンした線路の限定
tool.trackassembly.desc=乗り物が走る線路を組み立てる tool.trackassembly.activrad=アクティブポイントを選ぶの最小限距離
tool.trackassembly.name=線路の組み立て tool.trackassembly.activrad_con=アクティブ半径\:
tool.trackassembly.phytype=一覧済みしたものの物性タイプを選択して tool.trackassembly.adviser=ツールのレンダリング拠点/角度アドバイザーを管理する
tool.trackassembly.phytype_def=<表面物質タイプを選択して> tool.trackassembly.adviser_con=ドローアドバイザー
tool.trackassembly.phyname=線路を作る時物性ネームを選択すると表面フリクションに効果が出る tool.trackassembly.angsnap=この程度で最初の部分をスナップして
tool.trackassembly.phyname_con=表面材料名\: tool.trackassembly.angsnap_con=鋭角的な路線\:
tool.trackassembly.phyname_def=<表面物質ネームを選択して> tool.trackassembly.appangfst=最初部分のみに鋭角的なオフセットを付けて
tool.trackassembly.appangfst_con=最初のに鋭角的のを付けて
tool.trackassembly.applinfst=最初部分のみに点直線的なオフセットを付けて
tool.trackassembly.applinfst_con=最初のに点直線のを付けて
tool.trackassembly.bgskids=コンマ区切りボディーグループ/スキンIDのセレクションコード。 tool.trackassembly.bgskids=コンマ区切りボディーグループ/スキンIDのセレクションコード。
tool.trackassembly.bgskids_con=ボディーグループ/スキン\: tool.trackassembly.bgskids_con=ボディーグループ/スキン\:
tool.trackassembly.bgskids_def=ここにセレクションコードを登録して。模範1,0,0,2,1/3 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=スポーンする部分の重さ
tool.trackassembly.mass_con=部分の質量\: tool.trackassembly.mass_con=部分の質量\:
tool.trackassembly.model=タイプを拡張してとノードをクリックしてで線路を始まる/続けるために部分を選んで tool.trackassembly.model=タイプを拡張してとノードをクリックしてで線路を始まる/続けるために部分を選んで
tool.trackassembly.model_con=部分のモデル\: tool.trackassembly.model_con=部分のモデル\:
tool.trackassembly.activrad=アクティブポイントを選ぶの最小限距離 tool.trackassembly.name=線路の組み立て
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=追加的原点鋭角的なピッチオフセット
tool.trackassembly.nextpic_con=原点ピッチ\: tool.trackassembly.nextpic_con=原点ピッチ\:
tool.trackassembly.nextyaw=追加的原点鋭角的なヨーオフセット
tool.trackassembly.nextyaw_con=原点ヨー\:
tool.trackassembly.nextrol=追加的原点鋭角的なロールオフセット tool.trackassembly.nextrol=追加的原点鋭角的なロールオフセット
tool.trackassembly.nextrol_con=原点ロール\: tool.trackassembly.nextrol_con=原点ロール\:
tool.trackassembly.nextx=追加的原点直線的なXオフセット tool.trackassembly.nextx=追加的原点直線的なXオフセット
tool.trackassembly.nextx_con=Xオフセット\: tool.trackassembly.nextx_con=Xオフセット\:
tool.trackassembly.nexty=追加的原点直線的なYオフセット tool.trackassembly.nexty=追加的原点直線的なYオフセット
tool.trackassembly.nexty_con=Yオフセット\: tool.trackassembly.nexty_con=Yオフセット\:
tool.trackassembly.nextyaw=追加的原点鋭角的なヨーオフセット
tool.trackassembly.nextyaw_con=原点ヨー\:
tool.trackassembly.nextz=追加的原点直線的なZオフセット tool.trackassembly.nextz=追加的原点直線的なZオフセット
tool.trackassembly.nextz_con=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=部分と部分とアンカーの間に「突き当たる禁止」を入れる
tool.trackassembly.nocollide_con=突き当たる禁止 tool.trackassembly.nocollide_con=突き当たる禁止
tool.trackassembly.nocollidew=部分と世界ーの間に「突き当たる禁止」を入れる tool.trackassembly.nocollidew=部分と世界ーの間に「突き当たる禁止」を入れる
tool.trackassembly.nocollidew_con=な衝突世界突き当たる禁止 tool.trackassembly.nocollidew_con=な衝突世界突き当たる禁止
tool.trackassembly.freeze=動かぬ状態で部分をスポーンする tool.trackassembly.phyname=線路を作る時物性ネームを選択すると表面フリクションに効果が出る
tool.trackassembly.freeze_con=それは移動しません tool.trackassembly.phyname_con=表面材料名\:
tool.trackassembly.igntype=ツールをスナップする/スタックする時部分の種類を無視させる tool.trackassembly.phyname_def=<表面物質ネームを選択して>
tool.trackassembly.igntype_con=線路部分タイプを無視して tool.trackassembly.phytype=一覧済みしたものの物性タイプを選択して
tool.trackassembly.spnflat=次の部分が横にスポーン/スナップ/スタック tool.trackassembly.phytype_def=<表面物質タイプを選択して>
tool.trackassembly.spnflat_con=横にスポーンして tool.trackassembly.pn_contextm_st=Tables
tool.trackassembly.spawncn=真ん中で部分をスポーンして、他のは選んだアクティブポイントに身寄でスポーンする tool.trackassembly.pn_contextm_stdl=データベースエントリを消して
tool.trackassembly.spawncn_con=真ん中から原点 tool.trackassembly.pn_contextm_sted=アイテムを編集して(Luapad)
tool.trackassembly.surfsnap=プレイヤーに指した表面で部分をスナップして tool.trackassembly.pn_contextm_stnk=テーブルニックネームをコピーして
tool.trackassembly.surfsnap_con=トレース表面でスナップして tool.trackassembly.pn_contextm_stpt=テーブルパスをコピーして
tool.trackassembly.appangfst=最初部分のみに鋭角的なオフセットを付けて tool.trackassembly.pn_contextm_stsz=テーブルサイズをコピーして
tool.trackassembly.appangfst_con=最初のに鋭角的のを付けて tool.trackassembly.pn_contextm_sttm=テーブルタイムをコピーして
tool.trackassembly.applinfst=最初部分のみに点直線的なオフセットを付けて tool.trackassembly.pn_display=プレーやの線路部分ここに映る
tool.trackassembly.applinfst_con=最初のに点直線のを付けて tool.trackassembly.pn_display_lb=部分を映る
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.pn_export=クリックでクライアントデータベースをファイルにエクスポート tool.trackassembly.pn_export=クリックでクライアントデータベースをファイルにエクスポート
tool.trackassembly.pn_export_lb=DB エクスポート tool.trackassembly.pn_export_lb=DB エクスポート
tool.trackassembly.pn_routine=よく使った線路部分表 tool.trackassembly.pn_extdsv_act=アクティブ
tool.trackassembly.pn_routine_hd=よく使った部分\: tool.trackassembly.pn_extdsv_hd=外部DSVデータベースリストはここに見せる
tool.trackassembly.pn_externdb=使用可能外部データベース\: tool.trackassembly.pn_extdsv_lb=外部DSVリスト
tool.trackassembly.pn_extdsv_prf=データベース特異プレッフィクス
tool.trackassembly.pn_externdb_hd=外部データベース\: 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=ここにパターンを書くとサーチするために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=サーチするコラムを選択し
tool.trackassembly.pn_srchcol_lb=<でサーチ> tool.trackassembly.pn_srchcol_lb=<でサーチ>
tool.trackassembly.pn_srchcol_lb1=モデル tool.trackassembly.pntasist=ツールのレンダリングスナップポイントアシスタントを管理する
tool.trackassembly.pn_srchcol_lb2=タイプ tool.trackassembly.pntasist_con=ドローアシスタント
tool.trackassembly.pn_srchcol_lb3=ネーム tool.trackassembly.resetvars=追加的な数値をリセットためにクリックして
tool.trackassembly.pn_srchcol_lb4= tool.trackassembly.resetvars_con=V 変数リセット V
tool.trackassembly.pn_routine_lb=定番アイテム tool.trackassembly.spawncn=真ん中で部分をスポーンして、他のは選んだアクティブポイントに身寄でスポーンする
tool.trackassembly.pn_routine_lb1=期限 tool.trackassembly.spawncn_con=真ん中から原点
tool.trackassembly.pn_routine_lb2= tool.trackassembly.spnflat=次の部分が横にスポーン/スナップ/スタック
tool.trackassembly.pn_routine_lb3=タイプ tool.trackassembly.spnflat_con=横にスポーンして
tool.trackassembly.pn_routine_lb4=ネーム tool.trackassembly.stackcnt=スタックする場合線路部分の最大量
tool.trackassembly.pn_display_lb=部分を映る tool.trackassembly.stackcnt_con=部分の数\:
tool.trackassembly.pn_pattern_lb=パターンを書く tool.trackassembly.subfolder=フォルダを展開して、使用するトラックカテゴリを選択します
Cleanup_asmtracks=組み立てた線路部分 tool.trackassembly.subfolder_con=トラックカテゴリ\:
Cleaned_asmtracks=線路部分全部綺麗にした tool.trackassembly.surfsnap=プレイヤーに指した表面で部分をスナップして
SBoxLimit_asmtracks=スポーンした線路の限定 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=Общее создание/прилепание куски Cleaned_asmtracks=Все куски дороги очищены
tool.trackassembly.workmode.2=Пересечение активной точки Cleanup_asmtracks=Собранные куски дороги
tool.trackassembly.workmode.3=Кривой отрезок линии фитинг SBoxLimit_asmtracks=Вы достигли предела созданных кусков дороги!
tool.trackassembly.workmode.4=Нормаль поверхности перевернуть sbox_maxasmtracks=Измените это, чтобы настроить объекты, создаваемые с помощью инструмента сборки треков на сервере
tool.trackassembly.desc=Создает дорогу для транспортных средств sbox_maxasmtracks_con=Всего сегментов\:
tool.trackassembly.name=Сборка дороги tool.trackassembly.activrad=Минимальное расстояние чтобы выбрать активную точку
tool.trackassembly.phytype=Выберите тип физических свойств из тех которые перечислены здесь tool.trackassembly.activrad_con=Активный радиус\:
tool.trackassembly.phytype_con=Тип поверхности\: tool.trackassembly.adviser=Управляет отображением позиционного/углового советника
tool.trackassembly.phytype_def=<Выберите ТИП поверхности> tool.trackassembly.adviser_con=Нарисовать советник
tool.trackassembly.phyname=Выберите имя физических свойств которые могут быть использованы при создании дороги так как это повлияет на поверхностное трение tool.trackassembly.angsnap=Приклейте первый кусок созданный тем положением градусов
tool.trackassembly.phyname_con=Имя поверхности\: tool.trackassembly.angsnap_con=Угловое выравнивание\:
tool.trackassembly.phyname_def=<Выберите ИМЯ поверхности> tool.trackassembly.appangfst=Применять угловое смещение только на первой кусок
tool.trackassembly.appangfst_con=Применять угловое на первой
tool.trackassembly.applinfst=Применять линейное смещение только на первой кусок
tool.trackassembly.applinfst_con=Применять линейное на первой
tool.trackassembly.bgskids=Код выбора через запятую для Группа-тела/Кожа ID tool.trackassembly.bgskids=Код выбора через запятую для Группа-тела/Кожа ID
tool.trackassembly.bgskids_con=Группа-тела/Кожа\: tool.trackassembly.bgskids_con=Группа-тела/Кожа\:
tool.trackassembly.bgskids_def=Написать код выбора здесь. Например 1,0,0,2,1/3 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=Как тяжелый кусок создал будет
tool.trackassembly.mass_con=Масса куска\: 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=Выберите кусок чтобы начать/продолжить свою дорогу выбирая тип дерева и нажав на листе
tool.trackassembly.model_con=Модель куска\: tool.trackassembly.model_con=Модель куска\:
tool.trackassembly.activrad=Минимальное расстояние чтобы выбрать активную точку tool.trackassembly.name=Сборка дороги
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=Дополнительный сдвиг начала тангажом
tool.trackassembly.nextpic_con=Начало тангажа\: tool.trackassembly.nextpic_con=Начало тангажа\:
tool.trackassembly.nextyaw=Дополнительный сдвиг начала рысканием
tool.trackassembly.nextyaw_con=Начало рыскания\:
tool.trackassembly.nextrol=Дополнительный сдвиг начала рулона tool.trackassembly.nextrol=Дополнительный сдвиг начала рулона
tool.trackassembly.nextrol_con=Начало рулона\: tool.trackassembly.nextrol_con=Начало рулона\:
tool.trackassembly.nextx=Дополнительное линейное смещение X tool.trackassembly.nextx=Дополнительное линейное смещение X
tool.trackassembly.nextx_con=Смещения X\: tool.trackassembly.nextx_con=Смещения X\:
tool.trackassembly.nexty=Дополнительное линейное смещение Y tool.trackassembly.nexty=Дополнительное линейное смещение Y
tool.trackassembly.nexty_con=Смещения Y\: tool.trackassembly.nexty_con=Смещения Y\:
tool.trackassembly.nextyaw=Дополнительный сдвиг начала рысканием
tool.trackassembly.nextyaw_con=Начало рыскания\:
tool.trackassembly.nextz=Дополнительное линейное смещение Z tool.trackassembly.nextz=Дополнительное линейное смещение Z
tool.trackassembly.nextz_con=Смещения 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=Делает не-столкновение между кусками или кусоком/якорем
tool.trackassembly.nocollide_con=Не-столкновение tool.trackassembly.nocollide_con=Не-столкновение
tool.trackassembly.nocollidew=Делает не-столкновение между кусками и миром tool.trackassembly.nocollidew=Делает не-столкновение между кусками и миром
tool.trackassembly.nocollidew_con=Не-столкновение миром tool.trackassembly.nocollidew_con=Не-столкновение миром
tool.trackassembly.freeze=Создает заморожений кусок tool.trackassembly.nonrep_var=Не реплицируемые консольные переменные. Они имеют разные значения на сервере и клиенте
tool.trackassembly.freeze_con=Заморозить кусок tool.trackassembly.phyname=Выберите имя физических свойств которые могут быть использованы при создании дороги так как это повлияет на поверхностное трение
tool.trackassembly.igntype=Игнорирует различные типы кусков прилипания/накопления tool.trackassembly.phyname_con=Имя поверхности\:
tool.trackassembly.igntype_con=Игнорировать тип кусков tool.trackassembly.phyname_def=<Выберите ИМЯ поверхности>
tool.trackassembly.spnflat=Следующий кусок будет создан/приклеен/накоплен по горизонтали tool.trackassembly.phytype=Выберите тип физических свойств из тех которые перечислены здесь
tool.trackassembly.spnflat_con=Нагромождать по горизонтали tool.trackassembly.phytype_con=Тип поверхности\:
tool.trackassembly.spawncn=Создание куска в центре иначе в выбранной активной точке tool.trackassembly.phytype_def=<Выберите ТИП поверхности>
tool.trackassembly.spawncn_con=Происхождение из центра tool.trackassembly.pn_contextm_cp=Копировать
tool.trackassembly.surfsnap=Приклеить кусок к поверхности к которой ссылается пользователь tool.trackassembly.pn_contextm_cpbx=Коробка
tool.trackassembly.surfsnap_con=Приклеивать к поверхности tool.trackassembly.pn_contextm_cpmd=Модель
tool.trackassembly.appangfst=Применять угловое смещение только на первой кусок tool.trackassembly.pn_contextm_cpnm=Имя
tool.trackassembly.appangfst_con=Применять угловое на первой tool.trackassembly.pn_contextm_cprw=Ряд
tool.trackassembly.applinfst=Применять линейное смещение только на первой кусок tool.trackassembly.pn_contextm_cpth=Путь
tool.trackassembly.applinfst_con=Применять линейное на первой tool.trackassembly.pn_contextm_cpty=Тип
tool.trackassembly.adviser=Управляет отображением позиционного/углового советника tool.trackassembly.pn_contextm_ep=Развернуть узел
tool.trackassembly.adviser_con=Нарисовать советник tool.trackassembly.pn_contextm_ex=Экспортировать
tool.trackassembly.pntasist=Управляет изображение помощника для прилипания tool.trackassembly.pn_contextm_exdv=Внешний
tool.trackassembly.pntasist_con=Нарисовать помощника tool.trackassembly.pn_contextm_exru=Автозапуск
tool.trackassembly.ghostcnt=Управляет подсчет отображением куска-тени tool.trackassembly.pn_contextm_li=Линия
tool.trackassembly.ghostcnt_con=Нарисовать подсчет кусок-тень tool.trackassembly.pn_contextm_licg=Изменить
tool.trackassembly.engunsnap=Управляет приклеивание когда кусок выпущен физической пушки пользователя tool.trackassembly.pn_contextm_licr=Создать
tool.trackassembly.engunsnap_con=Приклеивать выпуском tool.trackassembly.pn_contextm_lirm=Удалить
tool.trackassembly.upspanchor=Включите якорь обновить для каждый раз когда создаете без накопления tool.trackassembly.pn_contextm_mv=Переместить
tool.trackassembly.upspanchor_con=Обновить якорь при создаване tool.trackassembly.pn_contextm_mvbt=Вниз
tool.trackassembly.type=Выберите типа дороги для использования путем расширения папки tool.trackassembly.pn_contextm_mvdn=Ниже
tool.trackassembly.type_con=Тип дороги\: tool.trackassembly.pn_contextm_mvtp=Вверх
tool.trackassembly.subfolder=Выберите категорию дороги для использования путем расширения папки tool.trackassembly.pn_contextm_mvup=Выше
tool.trackassembly.subfolder_con=Категория дороги\: tool.trackassembly.pn_contextm_st=Таблицы
tool.trackassembly.workmode=Измените эту опцию чтобы использовать другой рабочий режим tool.trackassembly.pn_contextm_stdl=Удалить файлы
tool.trackassembly.workmode_con=Рабочий режим\: 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=Нажмите чтобы сохранить файл базы данных
tool.trackassembly.pn_export_lb=Экспорт БД tool.trackassembly.pn_export_lb=Экспорт БД
tool.trackassembly.pn_routine=Список регулярно используемых кусков дороги tool.trackassembly.pn_extdsv_act=Активный
tool.trackassembly.pn_routine_hd=Часто используемых кусков пользователя\: tool.trackassembly.pn_extdsv_hd=Список внешних баз данных DSV отображается здесь
tool.trackassembly.pn_externdb=Внешние базы данных доступные для\: 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_hd=Внешние базы данных для\:
tool.trackassembly.pn_externdb_lb=Нажмите правой для вариантов\: tool.trackassembly.pn_externdb_ttt=Текущее измененное значение конфигурации\:
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_pattern=Напишите шаблон здесь и нажмите ВВОД для выполнения поиска 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=Выберите столбец для поиска
tool.trackassembly.pn_srchcol_lb=<Искать по> tool.trackassembly.pn_srchcol_lb=<Искать по>
tool.trackassembly.pn_srchcol_lb1=Модель tool.trackassembly.pntasist=Управляет изображение помощника для прилипания
tool.trackassembly.pn_srchcol_lb2=Тип tool.trackassembly.pntasist_con=Нарисовать помощника
tool.trackassembly.pn_srchcol_lb3=Имя tool.trackassembly.relica_var=Управление константами с репликацией. Значение на сервере передается всем клиентам для использования
tool.trackassembly.pn_srchcol_lb4=Конец tool.trackassembly.reload.1=Удалить элемент трассы. Удерживайте SHIFT для выбора якоря
tool.trackassembly.pn_routine_lb=Часто используемых кусков tool.trackassembly.reload.2=Удалить элемент трассы. Удерживайте SHIFT для выбора луча связи
tool.trackassembly.pn_routine_lb1=Срок tool.trackassembly.reload.3=Удалить узел интерполяции кривой. Удерживайте SHIFT для очистки стека
tool.trackassembly.pn_routine_lb2=Конец tool.trackassembly.reload.4=Очистить список выбора перевернутых объектов. При пустом удаляет элемент
tool.trackassembly.pn_routine_lb3=Тип tool.trackassembly.reload.5=Удалить узел интерполяции кривой. Удерживайте SHIFT для очистки стека
tool.trackassembly.pn_routine_lb4=Имя tool.trackassembly.reload_use.1=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.pn_display_lb=Показать кусок tool.trackassembly.reload_use.2=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.pn_pattern_lb=Напишите шаблон tool.trackassembly.reload_use.3=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.buttonas<>=Уменьшить/Увеличить tool.trackassembly.reload_use.4=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.buttonas+/-=Начение по умолчаниюз tool.trackassembly.reload_use.5=Включить экспорт базы данных для открытия менеджера DSV
tool.trackassembly.buttonas@M=Запомнить стоимость tool.trackassembly.resetvars=Нажмите чтобы сбросить дополнительные значения
tool.trackassembly.buttonas@D=Значение по умолчанию tool.trackassembly.resetvars_con=V Сбросить переменные V
tool.trackassembly.buttonas@=Применять стоимость\: tool.trackassembly.right.1=Копировать модель элемента трассы или открыть окно частых элементов
Cleanup_asmtracks=Собранные куски дороги tool.trackassembly.right.2=Копировать модель элемента трассы или открыть окно частых элементов
Cleaned_asmtracks=Все куски дороги очищены tool.trackassembly.right.3=Создать узел для сегментированной кривой. Удерживайте SHIFT для обновления
SBoxLimit_asmtracks=Вы достигли предела созданных кусков дороги! 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=一般生成/固定 Cleaned_asmtracks=清理了所有轨道组件
tool.trackassembly.workmode.2=活动点交点 Cleanup_asmtracks=组装好的轨道组件
tool.trackassembly.workmode.3=曲线线段拟合 SBoxLimit_asmtracks=You've hit the spawned tracks limit!
tool.trackassembly.workmode.4=表面法线翻转 sbox_maxasmtracks=更改此项以调整服务器上通过轨道工具生成的东西
tool.trackassembly.workmode.5=切线过渡弯 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.1=在地图上生成部件或将部件对齐
tool.trackassembly.info.2=将轨道部分与为此设计的专用路段连接起来 tool.trackassembly.info.2=将轨道部分与为此设计的专用路段连接起来
tool.trackassembly.info.3=创建通过给定检查点的连续轨道布局 tool.trackassembly.info.3=创建通过给定检查点的连续轨道布局
@ -14,16 +90,104 @@ tool.trackassembly.left.2=在交叉点生成轨道部件
tool.trackassembly.left.3=生成分段轨迹插值曲线 tool.trackassembly.left.3=生成分段轨迹插值曲线
tool.trackassembly.left.4=在所选轨道浏览列表上生成 tool.trackassembly.left.4=在所选轨道浏览列表上生成
tool.trackassembly.left.5=生成分段轨迹插值曲线 tool.trackassembly.left.5=生成分段轨迹插值曲线
tool.trackassembly.right.1=复制轨道件模型或打开常用部件对话框 tool.trackassembly.logfile=启用后开始将日志流式传输到专用文件中
tool.trackassembly.right.2=复制轨道件模型或打开常用部件对话框 tool.trackassembly.logfile_con=启用日志文件
tool.trackassembly.right.3=为分段曲线创建节点。按住SHIFT进行更新。 tool.trackassembly.logsmax=更改此项以调整日志流写入的最大输出行数
tool.trackassembly.right.4=将实体注册到浏览列表中。按住SHIFT更改模型。 tool.trackassembly.logsmax_con=记录线路\:
tool.trackassembly.right.5=为分段曲线创建节点。按住SHIFT进行更新。 tool.trackassembly.mass=生成的组件有多重
tool.trackassembly.right_use.1=禁用滚动。复制轨道件模型或打开常用组件对话框。 tool.trackassembly.mass_con=组件质量\:
tool.trackassembly.right_use.2=禁用滚动。复制轨道件模型或打开常用组件对话框。 tool.trackassembly.maxactrad=更改此项可调整获取点ID的最大活动半径
tool.trackassembly.right_use.3=从最近的轨道组件活动点生成节点。 tool.trackassembly.maxactrad_con=半径限制\:
tool.trackassembly.right_use.4=禁用滚动。复制轨道件模型或打开常用组件对话框。 tool.trackassembly.maxforce=更改此设置以调整创建焊缝时的最大力限制
tool.trackassembly.right_use.5=从最近的轨道组件活动点生成节点。 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.1=移除轨道部件。按住SHIFT键选择锚点。
tool.trackassembly.reload.2=移除一个轨道。按住SHIFT键选择关系射线。 tool.trackassembly.reload.2=移除一个轨道。按住SHIFT键选择关系射线。
tool.trackassembly.reload.3=删除曲线插值节点。按住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.3=启用数据库导出以打开DSV管理器
tool.trackassembly.reload_use.4=启用数据库导出以打开DSV管理器 tool.trackassembly.reload_use.4=启用数据库导出以打开DSV管理器
tool.trackassembly.reload_use.5=启用数据库导出以打开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=单击以重置附加值
tool.trackassembly.resetvars_con=V 重置变量 V tool.trackassembly.resetvars_con=V 重置变量 V
tool.trackassembly.nextpic=额外的原点角节距偏移 tool.trackassembly.right.1=复制轨道件模型或打开常用部件对话框
tool.trackassembly.nextpic_con=原点间距\: tool.trackassembly.right.2=复制轨道件模型或打开常用部件对话框
tool.trackassembly.nextyaw=附加原点偏航角偏移 tool.trackassembly.right.3=为分段曲线创建节点。按住SHIFT进行更新。
tool.trackassembly.nextyaw_con=原点偏航\: tool.trackassembly.right.4=将实体注册到浏览列表中。按住SHIFT更改模型。
tool.trackassembly.nextrol=附加原点角滚动偏移 tool.trackassembly.right.5=为分段曲线创建节点。按住SHIFT进行更新。
tool.trackassembly.nextrol_con=原点滚动\: tool.trackassembly.right_use.1=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.nextx=附加原点线性 X 支距 tool.trackassembly.right_use.2=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.nextx_con=支距 X\: tool.trackassembly.right_use.3=从最近的轨道组件活动点生成节点。
tool.trackassembly.nexty=附加原点线性 Y 支距 tool.trackassembly.right_use.4=禁用滚动。复制轨道件模型或打开常用组件对话框。
tool.trackassembly.nexty_con=支距 Y\: tool.trackassembly.right_use.5=从最近的轨道组件活动点生成节点。
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.rtradmenu=更改此设置可调整径向菜单基角并重新定位其选项 tool.trackassembly.rtradmenu=更改此设置可调整径向菜单基角并重新定位其选项
tool.trackassembly.rtradmenu_con=径向旋转\: tool.trackassembly.rtradmenu_con=径向旋转\:
tool.trackassembly.enpntmscr=启用后,通过鼠标滚动打开切换活动点 tool.trackassembly.sgradmenu=更改此设置以使径向菜单更加圆形。越高越平滑
tool.trackassembly.enpntmscr_con=启用点滚动 tool.trackassembly.sgradmenu_con=径向段\:
tool.trackassembly.exportdb=启用后,会将数据库导出为一个大文件 tool.trackassembly.sizeucs=为显示的坐标系设置的比例
tool.trackassembly.exportdb_con=启用数据库导出 tool.trackassembly.sizeucs_con=缩放 UCS\:
tool.trackassembly.modedb=将其更改为定义轨道数据库的存储行为 tool.trackassembly.spawncn=在中心点生成组件,否则相对于所选的活动点生成组件
tool.trackassembly.modedb_con=数据库模式\: tool.trackassembly.spawncn_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.spawnrate=更改此设置以调整每个服务器刻度生成的轨道段的数量 tool.trackassembly.spawnrate=更改此设置以调整每个服务器刻度生成的轨道段的数量
tool.trackassembly.spawnrate_con=生成率\: tool.trackassembly.spawnrate_con=生成率\:
tool.trackassembly.bnderrmod=更改此设置以定义客户端在地图边界之外生成组件时的行为 tool.trackassembly.spnflat=下一组件将水平生成/固定/堆叠
tool.trackassembly.bnderrmod_off=允许无限制地堆叠/生成 tool.trackassembly.spnflat_con=水平生成
tool.trackassembly.bnderrmod_log=拒绝堆栈/生成错误被记录 tool.trackassembly.stackcnt=堆叠时创建的最大组件数量
tool.trackassembly.bnderrmod_hint=显示拒绝堆栈/生成提示消息 tool.trackassembly.stackcnt_con=组件数量\:
tool.trackassembly.bnderrmod_generic=显示拒绝堆栈/生成通用消息 tool.trackassembly.subfolder=通过展开文件夹选择要使用的轨道类别
tool.trackassembly.bnderrmod_error=显示拒绝堆栈/生成错误消息 tool.trackassembly.subfolder_con=轨道类别\:
tool.trackassembly.bnderrmod_con=边界模式\: tool.trackassembly.surfsnap=将组件固定在玩家指向的表面上
tool.trackassembly.modedb=更改此项以定义轨道数据库的存储行为 tool.trackassembly.surfsnap_con=固定到轨迹表面
tool.trackassembly.modedb_lua=利用直接缓存存储
tool.trackassembly.modedb_sql=仅缓存请求的记录
tool.trackassembly.modedb_con=数据库模式\:
tool.trackassembly.maxfruse=更改此设置以调整有多少常用组件的深度
tool.trackassembly.maxfruse_con=常用组件\:
tool.trackassembly.timermode_ap=单击此按钮可将更改应用到 SQL 内存管理器配置 tool.trackassembly.timermode_ap=单击此按钮可将更改应用到 SQL 内存管理器配置
tool.trackassembly.timermode_ap_con=应用内存设置 tool.trackassembly.timermode_ap_con=应用内存设置
tool.trackassembly.timermode_md=更改此项可调整 SQL 内存管理器的计时器算法 tool.trackassembly.timermode_cqt=通过记录请求缓存查询计时器
tool.trackassembly.timermode_lf=更改此项可调整记录在缓存中的停留时间
tool.trackassembly.timermode_lf_con=Record life\:
tool.trackassembly.timermode_rd=启用后,通过强制 nil 值从缓存中擦除记录
tool.trackassembly.timermode_rd_con=启用记录删除
tool.trackassembly.timermode_ct=启用后,删除记录时强制运行垃圾回收 tool.trackassembly.timermode_ct=启用后,删除记录时强制运行垃圾回收
tool.trackassembly.timermode_ct_con=启用垃圾收集 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_mem=SQL表的内存管理器\:
tool.trackassembly.timermode_cqt=通过记录请求缓存查询计时器
tool.trackassembly.timermode_obj=附加到缓存记录的对象计时器 tool.trackassembly.timermode_obj=附加到缓存记录的对象计时器
tool.trackassembly.factory_reset=单击此按钮应用控制台变量出厂设置 tool.trackassembly.timermode_rd=启用后,通过强制 nil 值从缓存中擦除记录
tool.trackassembly.factory_reset_con=应用出厂设置 tool.trackassembly.timermode_rd_con=启用记录删除
tool.trackassembly.logfile=启用后开始将日志流式传输到专用文件中 tool.trackassembly.type=通过展开文件夹选择要使用的轨道类型
tool.trackassembly.logfile_con=启用日志文件 tool.trackassembly.type_con=轨道类型\:
tool.trackassembly.logsmax=更改此项以调整日志流写入的最大输出行数 tool.trackassembly.upspanchor=启用在每次生成时更新锚点(非固定状态)
tool.trackassembly.logsmax_con=记录线路\: tool.trackassembly.upspanchor_con=更新生成时的锚点
tool.trackassembly.client_var=客户端玩家偏好。在工具客户端配置中创建的Convar
tool.trackassembly.nonrep_var=非复制convar控件。它们在服务器和客户端上有不同的值
tool.trackassembly.relica_var=复制convar控件。服务器值发送给所有客户端使用
tool.trackassembly.utilities_user=用户设置
tool.trackassembly.utilities_admin=管理员设置 tool.trackassembly.utilities_admin=管理员设置
tool.trackassembly.buttonas<>=Decrement/Increment tool.trackassembly.utilities_user=用户设置
tool.trackassembly.buttonas+/-=Negate value tool.trackassembly.weld=在组件或组件/锚点之间创建焊接
tool.trackassembly.buttonas@M=Memorize value tool.trackassembly.weld_con=焊接
tool.trackassembly.buttonas@D=Default value tool.trackassembly.workmode.1=一般生成/固定
tool.trackassembly.buttonas@45=Update 45 tool.trackassembly.workmode.2=活动点交点
tool.trackassembly.buttonas@90=Update 90 tool.trackassembly.workmode.3=曲线线段拟合
tool.trackassembly.buttonas@135=Update 135 tool.trackassembly.workmode.4=表面法线翻转
tool.trackassembly.buttonas@180=Update 180 tool.trackassembly.workmode.5=切线过渡弯
sbox_maxasmtracks=更改此项以调整服务器上通过轨道工具生成的东西 tool.trackassembly.workmode=更改此选项以选择不同的工作模式
sbox_maxasmtracks_con=总段数\: tool.trackassembly.workmode_con=工作模式\:
Cleanup_asmtracks=组装好的轨道组件
Cleaned_asmtracks=清理了所有轨道组件
SBoxLimit_asmtracks=You've hit the spawned tracks limit!