View source for Mapster32 Scripting - EDukeWiki

# View source for Mapster32 Scripting

← Mapster32 Scripting

You do not have permission to edit this page, for the following reasons:

- The action you have requested is limited to users in the group: Users.
- You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page.

{{Build Intro}} {{M32Script Intro}} ---- Mapster32 can be scripted by using a language derived from CON. You can either issue commands directly to the editor with the "'''do'''" OSD command or load a script file (extension: .m32) by using "'''include''' &lt;filename&gt;" on the console. ''Events'', ''states'' and ''quotes'' can be redifined, while multiple definitions of ''defines'', ''gamevars'' and ''gamearrays'' are ignored. == Events == Events are defined in the same way as in CON (with '''onevent''' and '''endevent'''), but must be enabled at the console (with "'''enableevent''' &lt;event name or number&gt;" or "'''enableevent all'''") to take effect. Simply using "'''enableevent'''" shows a list of defined events and their activation state. == States == States (subroutines) are defined between '''defstate''' and '''ends''' and are called by using '''state'''. Specifying "1" for a '''gamevar''' flag will make that variable block-local, that is, every event and state, as well as the top level (in interactive execution) will have its own value of the variable. == Syntax changes from CON == *Structures and arrays can be written anywhere a gamevar is expected, even where they are written to. *Some commands have short forms. In particular, all commands that contain ''varvar'' can be written without it, e.g. '''ifvarvarl''' becomes '''ifl'''. *Some commands are of variable length, depending on preceding parameters. See '''sort''' and '''for''' in [[M32 script commands]]. *"sprite[''I'']" can be omitted. (See below: current sprite). In other words, the current sprite's members can be accessed by simply prepending their name with a period, like ".picnum". *Some commands accept variables in place of constants. == The current sprite == Some commands, like '''ifactor''', act on an implicit ''current sprite''. The current sprite is set by various commands (implicitly by '''for''', '''insertsprite''' and '''dupsprite''', and explicitly with '''seti''') as well as some events (EVENT_INSERTSPRITE2D, EVENT_INSERTSPRITE3D). The current sprite index is held in the gamevar ''I'' (capital i). The command '''for''' is a special case because whether and how the current sprite is set depends on the iteration type. == Key access == To define custom shortcuts, you need to place appropriate checks for pressed keys in the desired event. This is accomplished by using '''ifholdkey''' and '''ifhitkey'''. The difference between the two is that the latter will reset the key status while the former will continue to act until the user releases the key. See [[M32 script variables]] for events that are fired every interation of the main loop. == Drawn sprite access == Sprites that are drawn to the screen are accessed in the EVENT_ANALYZESPRITES event using the ''tsprite[].xxx'' sprite array, which can be indexed from 0 to ''spritesortcnt''-1. To loop over all of them, use "'''for i drawnsprites'''". The index of the actual sprite that was drawn is held in ''tsprite[i].owner''. [[Category:Level editing documentation]]

Templates used on this page:

- Template:Build Intro (view source)
- Template:M32Script Intro (view source)

Return to Mapster32 Scripting.

Retrieved from "http://wiki.eduke32.com/wiki/Mapster32_Scripting"