M32 script commands: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
m corrected mulscale
Additions and formatting
Line 9: Line 9:
'''D''': differs from CON, '''X''': deprecated/do not use (yet)<br>
'''D''': differs from CON, '''X''': deprecated/do not use (yet)<br>
'''''var/array/special''''': must be writable, [''something'']: optional command field
'''''var/array/special''''': must be writable, [''something'']: optional command field
''A note on the current sprite'': when the current sprite index ''I'' is set (that is, greater or equal zero), all functions that act on sprites by pointer ('''S''') are also available since the sprite pointer is set to point to the ''sprite[]'' array at index ''I'' in this case. The converse is not true, however: the sprite pointer could be set to a sprite structure other than the main ''sprite[]'' array (such as the ''tsprite[]'' array of sprites drawn on the screen), so code in a scope where the sprite pointer has been set ('''s''') cannot use functions accessing the ''sprite[]'' array ('''I''').


====basic commands====
====basic commands====
Line 14: Line 16:
*[[Define]]
*[[Define]]
*[[Include]]
*[[Include]]
*[[Defstate]] (only for defining)
*[[Defstate]] | (only for defining)
*[[Ends]]
*[[Ends]]
*[[State]] '''D''' (only for calling)
*[[State]] | '''D''' (only for calling)
*[[Onevent]]
*[[Onevent]]
*[[Endevent]]
*[[Endevent]]
*[[Gamevar]] '''D''' (different flags)
*[[Gamevar]] | '''D''' (different flags)


====control flow====
====control flow====
*[[Else]]
*[[Else]]
*[[Return]] '''D''' (returns from states)
*[[Return]] | '''D''' (returns from states)
*[[Break]] '''D''' (also breaks '''for''' and '''while*''' loops)
*[[Break]] | '''D''' (also breaks '''for''' and '''while*''' loops)
*[[Switch]]
*[[Switch]]
*[[Case]]
*[[Case]]
*[[Default]]
*[[Default]]
*[[Endswitch]]
*[[Endswitch]]
*[[Getcurraddress]] '''X'''
*[[Getcurraddress]] | '''X'''
*[[Jump]] '''X'''
*[[Jump]] | '''X'''


====struct access (redundant)====
====struct access (redundant)====
Line 40: Line 42:
*[[Setsprite]]
*[[Setsprite]]
*[[Getsprite]]
*[[Getsprite]]
*[[Gettspr]] '''X'''
*[[Gettspr]] | '''X'''
*[[Settspr]] '''X'''
*[[Settspr]] | '''X'''


====arrays====
====arrays====
*[[Gamearray]]
*[[Gamearray]]
*[[Setarray]] (redundant, use '''set''')
*[[Setarray]] | (redundant, use '''set''')
*[[Getarraysize]] ''array'' '''''size'''''
*[[Getarraysize]] ''array'' '''''size'''''
*[[Resizearray]] ''array'' ''newsize''
*[[Resizearray]] ''array'' ''newsize''
Line 62: Line 64:
*[[Orvar]]
*[[Orvar]]
*[[Xorvar]]
*[[Xorvar]]
*[[Shiftvarl]] (short: '''shiftl''')
*[[Shiftvarl]] | (short: '''shiftl''')
*[[Shiftvarr]] (short: '''shiftr''')
*[[Shiftvarr]] | (short: '''shiftr''')


====varvar commands====
====varvar commands====
*[[Randvarvar]]
*[[Randvarvar]]
*[[Displayrandvarvar]] (different from '''displayrand''')
*[[Displayrandvarvar]] | (different from '''displayrand''')
*[[Setvarvar]]
*[[Setvarvar]]
*[[Addvarvar]]
*[[Addvarvar]]
Line 79: Line 81:


====math commands====
====math commands====
The trigonometric commands interpret values outside the range [0, 2047] correctly as angles modulo 2048.
*[[Sin]] '''''resvar''''' ''var''
*[[Sin]] '''''resvar''''' ''var''
*[[Cos]] '''''resvar''''' ''var''
*[[Cos]] '''''resvar''''' ''var''
Line 86: Line 89:
*[[Sqrt]] ''var'' '''''resvar'''''
*[[Sqrt]] ''var'' '''''resvar'''''
*[[Mulscale]] '''''resvar''''' ''factor1'' ''factor2'' ''rshiftamount''
*[[Mulscale]] '''''resvar''''' ''factor1'' ''factor2'' ''rshiftamount''
*[[Divscale]] '''''resvar''''' ''dividend'' ''divisor'' ''lshiftamount''
*[[Dist]] '''''res''''' ''sprite1'' ''sprite2''
*[[Dist]] '''''res''''' ''sprite1'' ''sprite2''
*[[Ldist]] '''''res''''' ''sprite1'' ''sprite2''
*[[Ldist]] '''''res''''' ''sprite1'' ''sprite2''
Line 143: Line 147:
*[[Ifpdistl]] ''dist'' | '''S''' (distance is that of "mapper arrow" to current sprite)
*[[Ifpdistl]] ''dist'' | '''S''' (distance is that of "mapper arrow" to current sprite)
*[[Ifpdistg]] ''dist'' | '''S''' (distance is that of "mapper arrow" to current sprite)
*[[Ifpdistg]] ''dist'' | '''S''' (distance is that of "mapper arrow" to current sprite)
*[[Ifawayfromwall]] '''S'''
*[[Ifawayfromwall]] | '''S'''
*[[Ifcansee]] '''S''' (whether "mapper arrow" can see current sprite)
*[[Ifcansee]] | '''S''' (whether "mapper arrow" can see current sprite)
*[[Ifonwater]] '''S'''
*[[Ifonwater]] | '''S'''
*[[Ifinwater]] '''S'''
*[[Ifinwater]] | '''S'''
*[[Ifoutside]] '''S'''
*[[Ifoutside]] | '''S'''


====BUILD functions====
====BUILD functions====
*[[Insertsprite]] '''X''' '''i''' '''s'''
*[[Insertsprite]] | '''X''' '''i''' '''s'''
*[[Dupsprite]] ''oldsprite'' | '''i''' '''s'''
*[[Dupsprite]] ''oldsprite'' | '''i''' '''s'''
*[[Tdupsprite]] ''sprite'' | '''s''' (copies ''sprite'' to tsprite[''spritesortcnt''] and increments ''spritesortcnt'')
*[[Tdupsprite]] ''sprite'' | '''s''' (copies ''sprite'' to tsprite[''spritesortcnt''] and increments ''spritesortcnt'')
Line 173: Line 177:
*[[Changespritestat]] ''spritenum'' ''statnum''
*[[Changespritestat]] ''spritenum'' ''statnum''
*[[Changespritesect]] ''spritenum'' ''sectnum''
*[[Changespritesect]] ''spritenum'' ''sectnum''
*[[Headspritestat]] '''X'''
*[[Headspritestat]] | '''X'''
*[[Prevspritestat]] '''X'''
*[[Prevspritestat]] | '''X'''
*[[Nextspritestat]] '''X'''
*[[Nextspritestat]] | '''X'''
*[[Headspritesect]] '''X'''
*[[Headspritesect]] | '''X'''
*[[Prevspritesect]] '''X'''
*[[Prevspritesect]] | '''X'''
*[[Nextspritesect]] '''X'''
*[[Nextspritesect]] | '''X'''
*[[Sectorofwall]] ''wallnum''
*[[Sectorofwall]] ''wallnum''
*[[Fixrepeats]] ''wallnum''
*[[Fixrepeats]] ''wallnum''
The following returns a (positive) VGA palette index "closest" to the RGB color passed.
*[[Getclosestcol]] ''r'' ''g'' ''b'' '''''var'''''


====debugging commands====
====debugging commands====
Line 194: Line 200:
*[[Printmessage16]] ''quotenum''
*[[Printmessage16]] ''quotenum''
*[[Printmessage256]] ''quotenum'' ''x'' ''y''
*[[Printmessage256]] ''quotenum'' ''x'' ''y''
*[[Printext256]] ''quotenum'' ''x'' ''y'' ''col'' ''backcol'' ''fontsize''
*[[Printext256]] ''quotenum'' ''x'' ''y'' ''color'' ''backcolor'' ''fontsize''
*[[Printext16]] ''quotenum'' ''x'' ''y'' ''col'' ''backcol'' ''fontsize''
*[[Printext16]] ''quotenum'' ''x'' ''y'' ''color'' ''backcolor'' ''fontsize''
Specifying a negative ''max'' argument will make the allowable number range be ''max'' to -''max'':
The following two commands query the user for a number from 0 to ''max'',
specifying a negative ''max'' argument will make the allowable number range be ''max'' to -''max'':
*[[Getnumber16]] '''''var''''' ''quotenum'' ''max''
*[[Getnumber16]] '''''var''''' ''quotenum'' ''max''
*[[Getnumber256]] '''''var''''' ''quotenum'' ''max''
*[[Getnumber256]] '''''var''''' ''quotenum'' ''max''
Line 227: Line 234:
*[[Spritepal]] ''palnum'' | '''S'''
*[[Spritepal]] ''palnum'' | '''S'''
*[[Cactor]] ''picnum'' | '''S'''
*[[Cactor]] ''picnum'' | '''S'''
*[[Spgetlotag]] '''S'''
*[[Spgetlotag]] | '''S'''
*[[Spgethitag]] '''S'''
*[[Spgethitag]] | '''S'''
*[[Sectgetlotag]] '''S'''
*[[Sectgetlotag]] | '''S'''
*[[Sectgethitag]] '''S'''
*[[Sectgethitag]] | '''S'''
*[[Gettexturefloor]] '''S'''
*[[Gettexturefloor]] | '''S'''
*[[Gettextureceiling]] '''S'''
*[[Gettextureceiling]] | '''S'''


====drawing commands====
====drawing commands====
The suffixes 16 and 256 mean that the commands are to be used in 2D and 3D modes, respectively.
======used in EVENT_DRAW2DSCREEN======
======used in EVENT_DRAW2DSCREEN======
*[[Drawline16]] ''x1'' ''y1'' ''x2'' ''y2'' ''col''
*[[Drawline16]] ''x1'' ''y1'' ''x2'' ''y2'' ''color''
*[[Drawline16b]] ''x1'' ''y1'' ''x2'' ''y2'' ''col'' (BUILD units)
*[[Drawline16b]] ''x1'' ''y1'' ''x2'' ''y2'' ''color'' | (coordinates are in BUILD units)
*[[Drawcircle16]] ''x'' ''y'' ''radius'' ''col''
*[[Drawcircle16]] ''x'' ''y'' ''radius'' ''color''
*[[Drawcircle16b]] ''x'' ''y'' ''radius'' ''col'' (BUILD units)
*[[Drawcircle16b]] ''x'' ''y'' ''radius'' ''color'' | (coordinates are in BUILD units)
Specifying nonnegative values for the color will use the 16-color editor palette, whereas negative values -1 to -255 will use a palette of all colors available in 2D mode.


======used elsewhere======
======used elsewhere======

Revision as of 10:45, 4 August 2010

Mapster32 Scripting

This is a categorized list of every command in Mapster32-script.

Legend:
I: acts on current sprite, S: acts on current sprite by pointer (also valid in "for i drawnsprites")
i: sets current sprite, s: only sets current sprite by pointer
D: differs from CON, X: deprecated/do not use (yet)
var/array/special: must be writable, [something]: optional command field

A note on the current sprite: when the current sprite index I is set (that is, greater or equal zero), all functions that act on sprites by pointer (S) are also available since the sprite pointer is set to point to the sprite[] array at index I in this case. The converse is not true, however: the sprite pointer could be set to a sprite structure other than the main sprite[] array (such as the tsprite[] array of sprites drawn on the screen), so code in a scope where the sprite pointer has been set (s) cannot use functions accessing the sprite[] array (I).

basic commands

control flow

struct access (redundant)

All of these are redundant, use "set xyz zyx" instead.

arrays

var commands

varvar commands

math commands

The trigonometric commands interpret values outside the range [0, 2047] correctly as angles modulo 2048.

special commands

  • Sort array count [comparison_state]
  • For itervar what [what2]

valid iteration types (what):
Note: where the current sprite is affected, it is restored at the end of the loop

  • allsprites (i), allsectors, allwalls, selsprites (i), selsectors, selwalls, drawnsprites (s, indexes tsprite[])
  • spritesofsector sector (i), loopofwall wall, wallsofsector sector, range num

var if* and while* commands

varvar if* and while* commands

other if* commands

BUILD functions

The following returns a (positive) VGA palette index "closest" to the RGB color passed.

debugging commands

quote commands

The following two commands query the user for a number from 0 to max, specifying a negative max argument will make the allowable number range be max to -max:

findnear* (not tested)

misc. commands

current sprite commands

drawing commands

The suffixes 16 and 256 mean that the commands are to be used in 2D and 3D modes, respectively.

used in EVENT_DRAW2DSCREEN

Specifying nonnegative values for the color will use the 16-color editor palette, whereas negative values -1 to -255 will use a palette of all colors available in 2D mode.

used elsewhere

sound commands

All sound commands accept vars. Sounds should appear from current sprite if set and globally otherwise (not tested).