Game Maker 4.3

Game Maker 4.3 is an additional Game Maker release, that has been released after Game Maker 4.2 in November 2002, it has added "many small improvements and additions".

Event definition
The mechanism of specifying events in the object form has been changed a bit. Only a list of active events is shown. New ones can be added using a button. This made it possible to add new event types for key presses and releases (see below) and it makes it easier to see which events are specified and which ones are not.

Extra keyboard and mouse events
Extra keyboard and mouse event have been added that are only called once when a particular key or mouse button is pressed or released. This makes the continuous keyboard and mouse settings obsolete.

Merging games
There is now a new menu command in the game maker to merge another game into the current game. It will add all sprites, sounds, objects, rooms, etc. to the game. It does not load the game information or change the settings. Note that all resources and instances and tiles will get new id's which sometimes leads to incompatibilities if you use these in code.

Message boxes
The message boxes now have a much nicer look. Also there are functions message_background, etc. to change the appearance of the message boxes.

True inheritance
When using parent objects there is now full inheritance. That is, when object A is parent of B, B is considered as a special case of A. So when you e.g. apply an action to all instances of object A it is also applied to instances of object B. Similar with the with statements in code and when  setting variables in other object instances. Also when you call routines like instance_nearest or instance_position these are taken into account.

Extra actions
There are two addition actions that deal with variables: one that draws the value of a variable and one that compares the value of a variable with a value.

Extra text drawing features
When drawing a text you can use the # symbol (or CR chr(13) or LF chr(10)) to indicate a newline. There is a new function: draw_text_ext(x,y,str,sep,w) ... that draws a text at position x,y but makes sure the width is no more than w pixels and sep is the distance between the lines. Functions string_width_ext(str,sep,w) and string_height_ext(str,sep,w) correspond to this new text drawing function.

Better dealing of persistent instances at room start
This is only important for advanced users. The order of creation of instances and the handling of events when switching rooms has been changes, now corectly dealing with persistent instances. In particular, when switching rooms the following is executed in the given order:
 * room end events for all instances in the current room
 * (No destroy events for the instances that get removed!)
 * creation events of new instances
 * room creation code
 * room start events (also for the persistent instances)

Code editor
The code and script editor now has a right-mouse popup menu with additional functionality like searching and replacing, moving to a particular line, and selecting all.

Corrected errors

 * In previous versions, when replacing sprites or backgrounds, the temp files created for them where not removed, leading sometimes to huge disk space usage. This has been corrected.
 * A bug was corrected in drawing non left-aligned rotated text.
 * The object information form no longer shows double information.
 * Some actions and functions dealing with the number of instances and the instance at a position or nearest or further away did falsely take instances into account that were deleted just before. This has been solved.
 * Going from a room with a view to a room without views no longer gives problems with mouse positions.
 * get_directory no longer changes the working directory.
 * end of room events and end of game events where never performed. This has now been corrected.
 * Instances created in room creation code no longer have their creation event executed twice.
 * Key code vk_subtract does now exist.
 * function check_mouse_button now correctly works with mb_none.
 * no more errors when creating animations with 1 frame
 * stopped sounds no longer loop again.
 * bug in script editor with lines longer than 1000 chars.
 * room creation code without code (but with e.g. spaces or comment) no longer kills the game.
 * Loading a saved game now correctly changes the window size

Small changes

 * Object form is now scalable.
 * There is an addition option now in the help form to let it mimic the main game form. As a result it looks as if the help does appear in the same window as the game.
 * You can now define DLL's with up to 8 real arguments (not strings).
 * added functions object_get_parent(obj) and object_is_ancestor(obj,anc) to check for parent and ancester objects.
 * get_open_filename, get_save_filename and get_directory now return the empty string if the player presses Cancel. get_color returns -1 if Cancel is selected.
 * Execute script actions now show the name of the script.
 * function check_mouse_button can now have mb_any as an argument.
 * Added functions string_replace, string_replace_all and string_count.
 * Added function execute_file(fname) to execute a script in a file.
 * Added functions to get properties of objects, sprites, and other resources.
 * Added functions to find files in a directory
 * Added a function to check the attributes of a file
 * An object without a sprite will still get a little icon in the room editor.
 * Added a function stop_all_sounds.
 * Possibility to use icons with more colors
 * Added functions parameter_count and parameter_string(ind) to read command-line parameters.
 * Added an alternative get_directory_alt(cap,root) function.
 * Added a number of functions dealing with CD music.
 * Some simple skinning possibilities
 * Function window_handle
 * Added a help button to the code action form
 * In room editor, Ctrl-G switches grid on or off.
 * In room editor you are warned when there are instances or tiles outside the room.
 * Added a function to set the registry root (e.g. HKEY_CLASSES_ROOT)
 * Functions for writing other registry settings (use with extreme care)
 * Added a function to show an error message (and write it to the log file)