dodekeract/manta-config-engine-app

View on GitHub
readme.md

Summary

Maintainability
Test Coverage
# Manta Config Engine App

[![Join the chat at https://gitter.im/dodekeract/manta-config-engine][badge-gitter]][badge-gitter-link] [![MIT License][badge-license]][internal-license] [![Code Climate][badge-code-climate]][badge-code-climate-link] [![NPM Downloads][badge-npm-downloads]][badge-npm-downloads-link] [![NPM Dependencies][badge-npm-dependencies]][badge-npm-dependencies-link] [![Code Documentation][badge-inch-ci]][badge-inch-ci-link]

A [web-application][external-manta] using [Manta Config Engine][internal-manta] to generate [autoexec][external-autoexec] configurations for [Dota 2][external-dota-2].

![Layout Editor Keyboard][image-user-interface-layout-editor-keyboard]

## :warning: Warning

Since **Valve removed support for advanced autoexec**, this config is most likely completely unusuable. If you don't know **exactly** what you're doing, don't attempt to use it.

[Here](https://www.reddit.com/r/DotA2/comments/4kzld1/a_plea_to_valve_please_dont_kill_the_honest/) is an explanation of the situation.

In the unlikely case that anyone from Valve reads this: please re-consider your decision and just prevent multiple abilities/items per keypress. That would make awesome customization available again.

### Alternatives?

Here's a list of some relevant projects:

:no_entry: Disclaimer: **These projects MIGHT be forbidden by Valve and MAY lead to a VAC ban**.

- [@AveYo](https://github.com/AveYo)'s [D-OPTIMIZER](https://github.com/AveYo/D-OPTIMIZER) / [Project Arcana](http://steamcommunity.com/sharedfiles/filedetails/?id=408986743) (uses dota addons / vpk)
- [@Karrandalf](https://github.com/Karrandalf)'s [Project Oracle](https://github.com/Karrandalf/Dota2-TheCore-Config-Engine) (uses AutoHotkey)

## Table Of Contents

<!-- TOC depthFrom:2 depthTo:3 withLinks:1 updateOnSave:1 orderedList:0 -->

- [Table Of Contents](#table-of-contents)
- [Documentation](#documentation)
- [Features](#features)
- [Example Generated Autoexec](#example-generated-autoexec)
- [Installation](#installation)
    - [Via Git (recommended)](#via-git-recommended)
    - [Via NPM (experimental)](#via-npm-experimental)
- [License](#license)
- [Changelog](#changelog)

<!-- /TOC -->

## Documentation

The documentation for this project can be found [here][internal-documentation].

## Features

- Multiple layouts, which can be used for advanced key-combinations.
- Easy-to-use web-interface. Direct export to zip.
- Opensource - if you need a feature, implement it or submit a GitHub issue.
- Aims to use as few lines of `autoexec` as possible. Skips unused aliases & commands.
- Saves the preset to the browser's LocalStorage and includes `preset.json` in the zip-archive, which can be used to restore it in case it gets lost.
- Generates human-readable, commented code

## Example Generated Autoexec

````java
// generated using https://github.com/dodekeract/manta-config-engine
// graphical user-interface available at https://projects.dodekeract.com/manta/

// # Settings:
//---// Gameplay:
dota_hud_netgraph 1                         // Show Net Graph
dota_player_units_auto_attack 0             // Auto Attack
dota_player_units_auto_attack_after_spell 0 // Auto Attack After Spell
dota_player_auto_repeat_right_mouse 1       // Auto-Repeat Right Mouse
cl_dota_alt_unit_movetodirection 1          // Force Movement Direction
dota_force_right_click_attack 1             // Force Right-Click Attack
dota_player_multipler_orders 1              // Unified Unit Orders
dota_shop_view_mode 1                       // Always Show Grid-View
dota_always_show_player_names 1             // Show Player Names
dota_show_hero_finder 1                     // Show Hero Finder
dota_enable_range_finder 1                  // Show Range Finder
dota_camera_disable_zoom 1                  // Mousewheel Zoom
dota_reset_camera_on_spawn 0                // Move Camera On Respawn
dota_minimap_hero_scalar 1                  // Proximity Scale
dota_minimap_show_hero_icon 1               // Show Hero Icons
dota_minimap_always_draw_hero_icons 1       // Always Show Hero Icons
dota_minimap_hero_scalar_distance 20        // Proximity Scale Distance
dota_minimap_hero_scalar_minimum 400        // Proximity Scale Minimum

//---// Performance:
engine_no_focus_sleep 1 // Alt-Tab Idle
sv_forcepreload 1       // Force Server-Data Preload
cl_forcepreload 1       // Force Client-Data Preload

//---// Engine:
alias custom_load_indicator "playsound sounds/ui/coins_big.vsnd_c"

// # Chatwheels:
//---// Chatwheel 0:
alias +custom_chatwheel_0 "custom_chatwheel_0_0"                          // Prepare Chatwheel
alias custom_chatwheel_0_0 "chat_wheel_phrase_0 8; custom_chatwheel_0_1"  // ▶ Missing
alias custom_chatwheel_0_1 "chat_wheel_phrase_1 1; custom_chatwheel_0_2"  // ▶ Careful!
alias custom_chatwheel_0_2 "chat_wheel_phrase_2 2; custom_chatwheel_0_3"  // ▶ Get Back!
alias custom_chatwheel_0_3 "chat_wheel_phrase_3 3; custom_chatwheel_0_4"  // ▶ We need wards.
alias custom_chatwheel_0_4 "chat_wheel_phrase_4 29; custom_chatwheel_0_5" // ▶ Enemy returned
alias custom_chatwheel_0_5 "chat_wheel_phrase_5 54; custom_chatwheel_0_6" // ▶ Affirmative
alias custom_chatwheel_0_6 "chat_wheel_phrase_6 6; custom_chatwheel_0_7"  // ▶ Push now
alias custom_chatwheel_0_7 "chat_wheel_phrase_7 61; +chatwheel"           // ▶ Nice
alias -custom_chatwheel_0 "-chatwheel"                                    // Close Chatwheel

//---// Chatwheel 1:
alias +custom_chatwheel_1 "custom_chatwheel_1_0"                          // Prepare Chatwheel
alias custom_chatwheel_1_0 "chat_wheel_phrase_0 30; custom_chatwheel_1_1" // ▶ All enemy heroes missing!
alias custom_chatwheel_1_1 "chat_wheel_phrase_1 66; custom_chatwheel_1_2" // ▶ Game is hard
alias custom_chatwheel_1_2 "chat_wheel_phrase_2 78; custom_chatwheel_1_3" // ▶ I'm retreating
alias custom_chatwheel_1_3 "chat_wheel_phrase_3 41; custom_chatwheel_1_4" // ▶ We need detection
alias custom_chatwheel_1_4 "chat_wheel_phrase_4 79; custom_chatwheel_1_5" // ▶ Space created
alias custom_chatwheel_1_5 "chat_wheel_phrase_5 70; custom_chatwheel_1_6" // ▶ Relax, you're doing fine
alias custom_chatwheel_1_6 "chat_wheel_phrase_6 23; custom_chatwheel_1_7" // ▶ Bait
alias custom_chatwheel_1_7 "chat_wheel_phrase_7 68; +chatwheel"           // ▶ My bad
alias -custom_chatwheel_1 "-chatwheel"                                    // Close Chatwheel

// # Dependencies:
alias custom_ability_quickcast_0 "dota_ability_quickcast 0"                      // Quick-Cast Ability 1
alias custom_ability_selfcast_0 "dota_ability_execute 0; dota_ability_execute 0" // Self-Cast Ability 1

//---// Cycle 0:
alias custom_cycle_0 custom_cycle_0_0                                                    // Prepare Cycle
alias custom_cycle_0_0 "alias custom_cycle_0 custom_cycle_0_1; custom_cycle_0_command_0" // Cycle Through
alias custom_cycle_0_1 "alias custom_cycle_0 custom_cycle_0_2; custom_cycle_0_command_1" // Cycle Through
alias custom_cycle_0_2 "alias custom_cycle_0 custom_cycle_0_3; custom_cycle_0_command_2" // Cycle Through
alias custom_cycle_0_3 "alias custom_cycle_0 custom_cycle_0_0; custom_cycle_0_command_3" // Finish Cycle
alias custom_cycle_0_command_0 dota_health_per_vertical_marker 250                       // Command 1
alias custom_cycle_0_command_1 dota_health_per_vertical_marker 325                       // Command 2
alias custom_cycle_0_command_2 dota_health_per_vertical_marker 450                       // Command 3
alias custom_cycle_0_command_3 dota_health_per_vertical_marker 550                       // Command 4

alias custom_item_quickcast_0 "dota_item_quick_cast 0"                  // Quick-Cast Item 1
alias custom_item_selfcast_0 "dota_item_execute 0; dota_item_execute 0" // Self-Cast Item 1
alias +custom_layout_1 "exec layout-1.cfg"                              // Load Layout 2
alias -custom_layout_1 "exec layout-0.cfg"                              // Unload Layout 2

//---// View Base (Toggle):
alias +custom_view_base_toggle "custom_view_base_toggle_radiant"                                         // Set Default Base To Radiant
alias custom_view_base_toggle_dire "dota_camera_set_lookatpos 7000 6250; custom_view_base_toggle_0"      // Look At Dire Base
alias custom_view_base_toggle_radiant "dota_camera_set_lookatpos -7000 -6500; custom_view_base_toggle_1" // Look At Radiant Base
alias custom_view_base_toggle_0 "alias +custom_view_base_toggle custom_view_base_toggle_radiant"         // Set Radiant As Next Base
alias custom_view_base_toggle_1 "alias +custom_view_base_toggle custom_view_base_toggle_dire"            // Set Dire As Next Base
alias -custom_view_base_toggle "dota_recent_event; dota_recent_event; +dota_camera_follow"               // Jump Back

//---// View Rune (Toggle):
alias +custom_view_rune_toggle "custom_view_rune_toggle_top"                                           // Set Default Rune To Top
alias custom_view_rune_toggle_top "dota_camera_set_lookatpos -2225 1503; custom_view_rune_toggle_0"    // Look At Top Rune
alias custom_view_rune_toggle_bottom "dota_camera_set_lookatpos 2824 -2350; custom_view_rune_toggle_1" // Look At Bottom Rune
alias custom_view_rune_toggle_0 "alias +custom_view_rune_toggle custom_view_rune_toggle_bottom"        // Set Bottom As Next Rune
alias custom_view_rune_toggle_1 "alias +custom_view_rune_toggle custom_view_rune_toggle_top"           // Set Top As Next Rune
alias -custom_view_rune_toggle "dota_recent_event; dota_recent_event; +dota_camera_follow"             // Jump Back

// # Primary Layout:
exec layout-0.cfg

// # Load Indicator:
custom_load_indicator
````

## Installation

### Via Git (recommended)
- Install git & [Node.js][external-node]
- `git clone https://github.com/dodekeract/manta-config-engine-app`
- `npm install`

#### Running (git-only)

- `npm run start`

#### Applying Changes (git-only)

- `npm run apply`

#### Watching For Changes (git-only)

- `npm run watch`

### Via NPM (experimental)
- Install [Node.js][external-node]
- `npm install dota2-manta-config-engine-app -g`

#### Running (npm-only)
- `manta-config-engine-app` or `manta-config-engine-app portNumber`

## License
[MIT][internal-license]

## Changelog
[Changelog][internal-changelog]

[internal-changelog]:     https://github.com/dodekeract/manta-config-engine-app/tree/master/documentation/CHANGELOG.md
[internal-documentation]: https://github.com/dodekeract/manta-config-engine-app/tree/master/documentation/README.md
[internal-license]:       https://github.com/dodekeract/manta-config-engine-app/tree/master/documentation/LICENSE.md
[internal-manta]:         https://github.com/dodekeract/manta-config-engine

[image-user-interface-layout-editor-keyboard]: https://raw.githubusercontent.com/dodekeract/manta-config-engine-app/master/documentation/images/user-interface/layout-editor-keyboard.png

[badge-code-climate]:          https://codeclimate.com/github/dodekeract/manta-config-engine-app/badges/gpa.svg
[badge-code-climate-link]:     https://codeclimate.com/github/dodekeract/manta-config-engine-app
[badge-gitter]:                https://badges.gitter.im/Join%20Chat.svg
[badge-gitter-link]:           https://gitter.im/dodekeract/manta-config-engine
[badge-inch-ci]:               https://inch-ci.org/github/dodekeract/manta-config-engine-app.svg
[badge-inch-ci-link]:          https://inch-ci.org/github/dodekeract/manta-config-engine-app
[badge-license]:               https://img.shields.io/badge/license-MIT-blue.svg
[badge-npm-dependencies]:      https://david-dm.org/dodekeract/manta-config-engine-app.svg
[badge-npm-dependencies-link]: https://david-dm.org/dodekeract/manta-config-engine-app
[badge-npm-downloads]:         https://img.shields.io/npm/dt/dota2-manta-config-engine-app.svg
[badge-npm-downloads-link]:    https://npmjs.com/package/dota2-manta-config-engine-app

[external-node]:     https://nodejs.org
[external-dota-2]:   http://dota2.com
[external-manta]:    https://projects.dodekeract.com/manta/
[external-autoexec]: http://wiki.teamliquid.net/dota2/Console_Commands