Part¶
These are the generic properties every PART has. You can obtain a list of values of type Part using the LIST PARTS command.
-
structure
Part
¶ Members¶ Suffix Type Description NAME
String
Name of this part TITLE
String
Title as it appears in KSP MASS
Scalar
Current mass of part and its resources DRYMASS
Scalar
Mass of part if all resources were empty WETMASS
Scalar
Mass of part if all resources were full TAG
String
Name-tag if assigned by the player CONTROLFROM
None Call to control-from to this part STAGE
Scalar
The stage this is associated with UID
String
Unique identifying number of this part ROTATION
Direction
The rotation of this part’s \(x\)-axis POSITION
Vector
The location of this part in the universe FACING
Direction
the direction that this part is facing RESOURCES
List
list of the Resource
in this partTARGETABLE
Boolean
true if this part can be selected as a target SHIP
Vessel
the vessel that contains this part GETMODULE(name)
PartModule
Get one of the PartModules
by nameGETMODULEBYINDEX(index)
PartModule
Get one of the PartModules
by indexMODULES
List
Names ( String
) of allPartModules
ALLMODULES
List
Same as MODULES
HASMODULE(name)
Boolean
True if the part has the named module in it, false if not. PARENT
Part
Adjacent Part
on thisVessel
.HASPARENT
Boolean
Check if this part has a parent Part
HASPHYSICS
Boolean
Does this part have mass or drag CHILDREN
List
List of attached Parts
-
Part:
NAME
¶ Access: Get only Type: String
Name of part as it is used behind the scenes in the game’s API code.
A part’s name is the name it is given behind the scenes in KSP. It never appears in the normal GUI for the user to see, but it is used in places like Part.cfg files, the saved game persistence file, the ModuleManager mod, and so on.
-
Part:
TITLE
¶ Access: Get only Type: String
The title of the part as it appears on-screen in the gui.
A part’s title is the name it has inside the GUI interface on the screen that you see as the user.
-
Part:
TAG
¶ Access: Get / Set Type: String
The name tag value that may exist on this part if you have given the part a name via the name-tag system.
A part’s tag is whatever custom name you have given it using the name-tag system described here. This is probably the best naming convention to use because it lets you make up whatever name you like for the part and use it to pick the parts you want to deal with in your script.
WARNING: This suffix is only settable for parts attached to the CPU Vessel
This example assumes you have a target vessel picked, and that the target vessel is loaded into full-physics range and not “on rails”. vessels that are “on rails” do not have their full list of parts entirely populated at the moment:
LIST PARTS FROM TARGET IN tParts. PRINT "The target vessel has a". PRINT "partcount of " + tParts:LENGTH. SET totTargetable to 0. FOR part in tParts { IF part:TARGETABLE { SET totTargetable TO totTargetable + 1. } } PRINT "...and " + totTargetable. PRINT " of them are targetable parts.".
-
Part:
CONTROLFROM
()¶ Access: Callable function only Return type: None Call this function to cause the game to do the same thing as when you right-click a part on a vessel and select “control from here” on the menu. It rotates the control orientation so that fore/aft/left/right/up/down now match the orientation of this part. NOTE that this will not work for every type of part. It only works for those parts that KSP itself allows this for (control cores and docking ports). It accepts no arguments, and returns no value. All vessels must have at least one “control from” part on them somewhere, which is why there’s no mechanism for un-setting the “control from” setting other than to pick another part and set it to that part instead.
Warning
This suffix is only callable for parts attached to the CPU Vessel
-
Part:
UID
¶ Access: Get only Type: String
All parts have a unique ID number. Part’s uid never changes because it is the same value as stored in persistent.sfs. Although you can compare parts by comparing their uid it is recommended to compare parts directly if possible.
-
Part:
ROTATION
¶ Access: Get only Type: Direction
The rotation of this part’s X-axis, which points out of its side and is probably not what you want. You probably want the
Part:FACING
suffix instead.
-
Part:
POSITION
¶ Access: Get only Type: Vector
The location of this part in the universe. It is expressed in the same frame of reference as all the other positions in kOS, and thus can be used to help do things like navigate toward the position of a docking port.
-
Part:
MASS
¶ Access: Get only Type: Scalar
The current mass or the part and its resources. If the part has no physics this will always be 0.
-
Part:
WETMASS
¶ Access: Get only Type: Scalar
The mass of the part if all of its resources were full. If the part has no physics this will always be 0.
-
Part:
DRYMASS
¶ Access: Get only Type: Scalar
The mass of the part if all of its resources were empty. If the part has no physics this will always be 0.
-
Part:
GETMODULE
(name)¶ Parameters: - name – (
String
) Name of the part module
Returns: Get one of the
PartModules
attached to this part, given the name of the module. (SeePart:MODULES
for a list of all the names available).- name – (
-
Part:
GETMODULEBYINDEX
(index)¶ Parameters: - index – (
Scalar
) Index number of the part module
Returns: Get one of the
PartModules
attached to this part, given the index number of the module. You can usePart:MODULES
for a list of names of all modules on the part. The indexes are not guaranteed to always be in the same order. It is recommended to iterate over the indexes with a loop and verify the module name:local moduleNames is part:modules. for idx in range(0, moduleNames:length) { if moduleNames[idx] = "test module" { local pm is part:getmodulebyindex(idx). DoSomething(pm). } }
- index – (
-
Part:
MODULES
¶ Access: Get only Type: List
of stringslist of the names of
PartModules
enabled for this part.
-
Part:
ALLMODULES
¶ Same as
Part:MODULES
-
Part:
HASMODULE
(name)¶ Parameters: - name – (
String
) The name of the module to check for
Returns: Checks to see if this part contains the
PartModule
with the name given. If it does, this returns true, else it returns false. (IfHASMODULE(name)
returns false, then this means an attempt to useGETMODULE(name)
would fail with an error.)- name – (
-
Part:
PARENT
¶ Access: Get only Type: Part
When walking the tree of parts, this is the part that this part is attached to on the way “up” toward the root part.
-
Part:
HASPHYSICS
¶ Access: Get only Type: bool This comes from a part’s configuration and is an artifact of the KSP simulation.
For a list of stock parts that have this attribute and a fuller explanation see the KSP wiki page about massless parts.
-
Part:
HASPARENT
¶ Access: Get only Type: Boolean
When walking the tree of parts, this is true as long as there is a parent part to this part, and is false if this part has no parent (which can only happen on the root part).
-
Part:
CHILDREN
¶ Access: Get only Type: List
ofParts
When walking the tree of parts, this is all the parts that are attached as children of this part. It returns a list of zero length when this part is a “leaf” of the parts tree.