Angelscript is an actively used programming language created in 2003. AngelScript is a game-oriented interpreted compiled scripting language. AngelScript features static typing, object handles (similar to C++ pointers but garbage collected via reference counting), object-orientation, single inheritance, multiple inheritance with interfaces. Allows operators to be registered and overloaded. Read more on Wikipedia...

16Years Old 525Users 2Jobs

Example code from the Hello World Collection:

// Hello world in AngelScript

void main() { print("Hello world\n"); }

Example code from Linguist:

/*
*	This is a sample script.
*/

#include "BotManagerInterface.acs"

BotManager::BotManager g_BotManager( @CreateDumbBot );

CConCommand@ m_pAddBot;

void PluginInit()
{
	g_BotManager.PluginInit();
	
	@m_pAddBot = @CConCommand( "addbot", "Adds a new bot with the given name", @AddBotCallback );
}

void AddBotCallback( const CCommand@ args )
{
	if( args.ArgC() < 2 )
	{
		g_Game.AlertMessage( at_console, "Usage: addbot <name>" );
		return;
	}
	
	BotManager::BaseBot@ pBot = g_BotManager.CreateBot( args[ 1 ] );
	
	if( pBot !is null )
	{
		g_Game.AlertMessage( at_console, "Created bot " + args[ 1 ] + "\n" );
	}
	else
	{
		g_Game.AlertMessage( at_console, "Could not create bot\n" );
	}
}

final class DumbBot : BotManager::BaseBot
{	
	DumbBot( CBasePlayer@ pPlayer )
	{
		super( pPlayer );
	}
	
	void Think()
	{
		BotManager::BaseBot::Think();
		
		// If the bot is dead and can be respawned, send a button press
		if( Player.pev.deadflag >= DEAD_RESPAWNABLE )
		{
			Player.pev.button |= IN_ATTACK;
		}
		else
			Player.pev.button &= ~IN_ATTACK;
		
		KeyValueBuffer@ pInfoBuffer = g_EngineFuncs.GetInfoKeyBuffer( Player.edict() );
		
		pInfoBuffer.SetValue( "topcolor", Math.RandomLong( 0, 255 ) );
		pInfoBuffer.SetValue( "bottomcolor", Math.RandomLong( 0, 255 ) );
		
		if( Math.RandomLong( 0, 100 ) > 10 )
			Player.pev.button |= IN_ATTACK;
		else
			Player.pev.button &= ~IN_ATTACK;
			
		for( uint uiIndex = 0; uiIndex < 3; ++uiIndex )
		{
			m_vecVelocity[ uiIndex ] = Math.RandomLong( -50, 50 );
		}
	}
}

BotManager::BaseBot@ CreateDumbBot( CBasePlayer@ pPlayer )
{
	return @DumbBot( pPlayer );
}

Last updated July 22nd, 2019