• Stars
    star
    666
  • Rank 67,706 (Top 2 %)
  • Language GDScript
  • License
    MIT License
  • Created almost 7 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

In-game console for Godot 3.

In-game console for Godot Logo

Godot Console

All Contributors

In-game console for Godot Screenshot

In-game console for Godot, which could be easily extended with new commands.

Features:

  • Creating custom commands with add_command.

  • Autocomplete with TAB keyboard key.

  • Writing to console using write and write_line methods. You can also use BB codes.

    (Is also printed to engine output)

  • Session command history (using UP and DOWN keyboard arrows).

    • Change the number of stored commands in the history. (Change in Console.gd line 30 the current NUMBER to an positive integer value) 29: var History = preload('Misc/History.gd').new(NUMBER)
  • Flexible types:

  • FuncRef support with Godot >=3.2 (can be used as a command target).

Installation:

Via Editor AssetLib:

  1. Open AssetLib.
  2. Search for Console, category is Scripts; Open it and click Download and then Install.
  3. Click install. Package installer will copy filestructure as-is so you will have this additional directories in your project: addons/@quentincaffeino/*, addons/quentincaffeino/*.
  4. Open Project > Project Settings > Plugins, search for quentincaffeino-console and check the Enable checkbox.
  5. You can activate the console with CTRL + ` while running your game (can be changed, see quentincaffeino_console_toggle action).

Via GIT:

  1. Clone this project or download latest release.
  2. Copy./addons/@quentincaffeino and ./addons/quentincaffeino into your projects addons folder.

So you will have this structure:

res://
β”œβ”€β”€ addons
β”‚Β Β  β”œβ”€β”€ @quentincaffeino
β”‚Β Β  β”œβ”€β”€ quentincaffeino
β”‚Β Β  β”œβ”€β”€ ...

  1. Open Project > Project Settings > Plugins, search for quentincaffeino-console and check the Enable checkbox.
  2. You can activate the console with CTRL + ` while running your game (can be changed, see quentincaffeino_console_toggle action).

Example usage:

Usage we will get:

$ sayHello "Adam Smith"
Hello Adam Smith!

GDScript

# Function that will be called by our command
func print_hello(name = ''):
	Console.write_line('Hello ' + name + '!')

func _ready():
	# Registering command
	# 1. argument is command name
	# 2. arg. is target (target could be a funcref)
	# 3. arg. is target name (name is not required if it is the same as first arg or target is a funcref)
	Console.add_command('sayHello', self, 'print_hello')\
		.set_description('Prints "Hello %name%!"')\
		.add_argument('name', TYPE_STRING)\
		.register()

C#

// Function that will be called by our command
public string PrintHello(string name = null) {
	GD.Print("Hello " + name + "!");
	return "test";
}

public override void _Ready()
{
	// Registering command
	// 1. argument is command name
	// 2. arg. is target (target could be a funcref)
	// 3. arg. is target name (name is not required if it is the same as first arg or target is a funcref)
	(((GetNode("/root/Console").Call("add_command", "sayHello", this, "PrintHello") as Godot.Object)
		.Call("set_description", "prints \"hello %name%!\"") as Godot.Object)
		.Call("add_argument", "name", Variant.Type.String) as Godot.Object)
		.Call("register");
}

C# with wrapper (Note this is WIP and some methods may be missing)

  1. Instead of enabling the Console checkbox from the addon tab you will want to enable CSharpConsole via the plugin checkbox
  2. See the example below for how to use once plugin is enabled

Example:

public override void _Ready()
{
    _wrapper = GetTree().Root.GetNode<Console>("CSharpConsole");
    _wrapper.AddCommand("sayHello", this, nameof(PrintHello))
            .SetDescription("prints \"hello %name%!\"")
            .AddArgument("name", Variant.Type.String)
            .Register();
}

public void PrintHello(string name = null) {
    GD.Print($"Hello {name}!");
}

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Sergei ZH
Sergei ZH

πŸ’» πŸ’¬ πŸ“– πŸ€” πŸ‘€
Michael Brune
Michael Brune

️️️️♿️ πŸ›
Michael Aganier
Michael Aganier

πŸ›
hpn332
hpn332

πŸ›
Danil
Danil

πŸ›
Paul Hocker
Paul Hocker

πŸ›
Samantha Clarke
Samantha Clarke

πŸ›
Hugo Locurcio
Hugo Locurcio

️️️️♿️
Dmitry Derbin
Dmitry Derbin

πŸ’¬
VitexHD
VitexHD

πŸ›
hilfazer
hilfazer

πŸ’» πŸ›
Crazy Chenz
Crazy Chenz

πŸ’»
Marcus SchΓΌtte
Marcus SchΓΌtte

πŸ’»
Kimmo Salmela
Kimmo Salmela

πŸ’»
GuillaumeCailhe
GuillaumeCailhe

πŸ› πŸ€” πŸ’¬
Josh DeGraw
Josh DeGraw

πŸ’»
Lyaaaaaaaaaaaaaaa
Lyaaaaaaaaaaaaaaa

πŸš‡
Gamemap
Gamemap

πŸ“–
Spyrex
Spyrex

πŸ’»
Zhwt
Zhwt

πŸ’»
Ryan Linehan
Ryan Linehan

πŸ’»
Kurt
Kurt

πŸ“–
eisclimber
eisclimber

πŸ› πŸ’»
Rafael Correa
Rafael Correa

πŸ’»
PraxTube
PraxTube

πŸ›

This project follows the all-contributors specification. Contributions of any kind welcome!

License

Licensed under the MIT license, see LICENSE.md for more information.