Jump to content

Category:Structure access: Difference between revisions

From EDukeWiki
Add missing shorthands to the table, relocate few existing ones to the dedicated column
 
(3 intermediate revisions by one other user not shown)
Line 40: Line 40:


{| {{prettytablebordered}}
{| {{prettytablebordered}}
!Get/Set Name!!Quick Name!!ID type!![[THISACTOR]] meaning!!Description!!Notes
!Get/Set Name!!Quick Name!!Shorthand!!ID type!![[THISACTOR]] meaning!!Description!!Notes
|-
|-
|[[Members of the sprite, hittype, and spriteext structures|actor]]
|[[Members of the sprite, hittype, and spriteext structures|actor]]
|[[Members of the sprite, hittype, and spriteext structures|sprite]]
|[[Members of the sprite, hittype, and spriteext structures|sprite]]
| a
|[[sprite id]]
|[[sprite id]]
|current sprite
|current sprite
Line 50: Line 51:
|-
|-
|colspan="2"|actorvar
|colspan="2"|actorvar
| av
|[[sprite id]]
|[[sprite id]]
|current sprite
|current sprite
Line 56: Line 58:
|-
|-
|colspan="2"|[[Members of the tsprite structure|tspr]]
|colspan="2"|[[Members of the tsprite structure|tspr]]
|
|[[sprite id]]
|[[sprite id]]
|current sprite
|current sprite
Line 62: Line 65:
|-
|-
|colspan="2"|[[Members of the projectile structure|projectile]]
|colspan="2"|[[Members of the projectile structure|projectile]]
|
|[[tile number]]
|[[tile number]]
|(none)
|(none)
Line 68: Line 72:
|-
|-
|colspan="2"|[[Members of the projectile structure|thisprojectile]]
|colspan="2"|[[Members of the projectile structure|thisprojectile]]
|
|[[sprite id]]
|[[sprite id]]
|current sprite
|current sprite
Line 74: Line 79:
|-
|-
|colspan="2"|[[Members of the sector structure|sector]]
|colspan="2"|[[Members of the sector structure|sector]]
| s
|[[sector id]]
|[[sector id]]
|current sprite's sector
|current sprite's sector
Line 80: Line 86:
|-
|-
|colspan="2"|[[Members of the wall structure|wall]]
|colspan="2"|[[Members of the wall structure|wall]]
| w
|[[wall id]]
|[[wall id]]
|(none)
|(none)
Line 86: Line 93:
|-
|-
|colspan="2"|[[Members of the player structure|player]]
|colspan="2"|[[Members of the player structure|player]]
| p
|[[player id]]
|[[player id]]
|current player
|current player
|players
|players
|
|  
|-
|-
|colspan="2"|playervar
|colspan="2"|playervar
| pv
|[[player id]]
|[[player id]]
|current player
|current player
|per-player gamevars
|per-player gamevars
|
|  
|-
|-
|colspan="2"|[[Members of the input structure|input]]
|colspan="2"|[[Members of the input structure|input]]
| i
|[[player id]]
|[[player id]]
|current player
|current player
|input
|input
|Generally used within [[EVENT_PROCESSINPUT]].
|Generally used within [[EVENT_PROCESSINPUT]]
|-
|-
|colspan="2"|[[Members of the userdef structure|userdef]]
|colspan="2"|[[Members of the userdef structure|userdef]]
| u
|(none)
|(none)
|(none)
|(none)
|user preferences, game state
|user preferences, game state
|Use nothing within the brackets.
|Use nothing within the brackets
|-
|-
|colspan="2"|[[Members of the tiledata structure|tiledata]]
|colspan="2"|[[Members of the tiledata structure|tiledata]]
|
|[[tile number]]
|[[tile number]]
|current sprite's picnum
|current sprite's picnum
Line 117: Line 129:
|(none)
|(none)
|[[Members of the paldata structure|paldata]]
|[[Members of the paldata structure|paldata]]
|
|[[palookup number]]
|[[palookup number]]
|(none)
|(none)
Line 123: Line 136:
|}
|}


Shorthands above can be seen as aliases, i.e. <code>getav</code> == <code>getactorvar</code>.
[[Category:EDuke32 end-user documentation]]
[[Category:EDuke32 end-user documentation]]
[[Category:Scripting documentation]]
[[Category:Scripting documentation]]

Latest revision as of 10:08, 15 January 2026

One of the hallmarks of EDuke32's CON scripting advancements is the ability to access many of the game's internal data structures.

Usage

Struct access was designed with the syntax of an array of a struct type in the C programming language.

The index in [square brackets] is an ID number that has different meanings for different structs. Most simple uses of struct access will suffice to use the gamevar THISACTOR as an index, which usually means the current sprite but is also usable as a magic token for different meanings with non-sprite structures. Other times, you may know an ID from a command like findnearactor or espawn (from gamevar RETURN). On occasion you may also loop through all or a selection of ID numbers.

Getters & Setters

Get/set commands are the original methods of CON struct access that date back to DOS EDuke.

get<struct>[<id>].<member> <gamevar>
set<struct>[<id>].<member> <value>

The get commands fetch one of the members of a structure into a gamevar.

The set commands assign the value provided to the member.

<id> can be omitted entirely, which implies an id of THISACTOR.

The commands with the "var" suffix are used to access custom members for a struct, which are really just that ID's gamevars which have the per-<struct> flag set. So setactorvar[THISACTOR].temp 0 is the same as setvar temp 0.

Quick Access

More recently added, structs can be used in place of gamevars, in the form <struct>[<id>].<member>. For example:

ifvarg userdef[].executions 10000
{
    redefinequote 117 You have way too much time on your hands.
    echo 117
}

With quick access, structures are always read-only. Attempting to use a gamevar-writing command on a quick access structure will result in a compiler error.

Quick struct access cannot be used as an index to other quick struct accesses.

Structs

Get/Set Name Quick Name Shorthand ID type THISACTOR meaning Description Notes
actor sprite a sprite id current sprite sprites and hittypes
actorvar av sprite id current sprite per-actor gamevars
tspr sprite id current sprite sprites' display properties Can only be used within EVENT_ANIMATESPRITES on sprites with mdflags containing flag 16.
projectile tile number (none) projectile types
thisprojectile sprite id current sprite individual projectiles
sector s sector id current sprite's sector sectors, floors, and ceilings
wall w wall id (none) walls
player p player id current player players
playervar pv player id current player per-player gamevars
input i player id current player input Generally used within EVENT_PROCESSINPUT
userdef u (none) (none) user preferences, game state Use nothing within the brackets
tiledata tile number current sprite's picnum art tiles
(none) paldata palookup number (none) palette lookups (palswaps)

Shorthands above can be seen as aliases, i.e. getav == getactorvar.