Point is a compiler for the C-like language Sand. This language is designed from the ground up for mission scripting in conjunction with GTA3 (original, Vice City, and San Andreas). This allows for much easier mission creation since one does not need to deal with the low-level details of GTA's assembly language.
Last updated: January 18th, 2006
For the most up-to-date information visit the website at http://www.joncaruana.com/projects/point/.
- Full C operator evaluation
- High-level control constructs like
- Object-oriented syntax
- Strongly typed and user named variables with automatic allocation of actual memory addresses
- Generates human-readable assembly to allow for debugging if necessary
- A machine description XML file replaces the opcode ini file used in older tools and includes parameter names and types, preventing accidental missing or wrong-type parameters
Source code. (Subject to this license.)
View the API documentation online.
- Customizable syntax highlighting in the GUI.
- Compact array initialization notation.
- Prefix and postfix
- Future versions will probably require the .NET 2.0 runtime. This will
make new features in the GUI easier.
January 17th, 2006
- The source code for Point is now available for non-commercial use.
v0.16 (November 9th, 2005)
- Sand now supports object oriented expression syntax. Examples:
while (!player.Car.Driver.IsAlive) Wait(100);
player.SetCoords(16, 24, -1.5);
actor1.SetHealth(actor2.GetHealth() + 50);
actor1.SetHealth(actor2.Health + 50);
Note: the property-like method syntax cannot be used on the left side of an assignment statement.
- Call tips in the GUI are displayed while typing functions and understand nesting of calls.
Point binary distributions may be freely redistributed without royalty. License terms. The compiler and its source code may be used only for non-commercial purposes.
A Few Examples
- Bubble Sort - Demonstrates using arrays and strings with the classic computer science example.
- Takedown - Gives the player a progression of stars, but restores his health. Also prints the Fibonacci sequence. Demonstrates using missions, threads, external threads, and functions.
For information on using the command line interface, see this page.
Point requires the .NET Framework 1.1.
A Language Overview
Sand's syntax is very C-like, although slightly less robust in certain areas. Some of the important differences are:
- Subroutines, threads, missions, and global variables do not need to be declared before they are referenced.
- Do to limitations in GTA, subroutines cannot recursively invoke themselves (even indirectly).
- Subroutines are declared with a slightly different syntax.
- Variable declarations may occur at any point in a block (like C++).
- Conditional expressions do not short circuit.
The opcode XML file this compiler relies on was originally put together by Jey Kottalam. And it of course relies on the information many people have helped gather. A large amount of opcode information comes from CyQ who was also invaluable in decoding the changes made to the SCM files for San Andreas. Also, CtlAltDel, dans, and several others helped me understand the low-level aspects of mission coding.
The compiler's parser is constructed using ANTLR.
The compiler's graphical IDE is constructed using DockPanel written by Weifen Luo, and ScintillaNET.
Copyright 2004-2006 Jon Caruana