While waiting for riot to respond to request regarding viability and due to encription of their chat service this project is temporarily halted.
League of legends tool collection of scripts I have written over the years. All modules are written in java with the help of quering some external apis and looking at the log files the client produces. No memory reading or process hooking takes place. All windows are simple transparent overlay windows or windows overlayed with OBS Studio's chroma key filter.
A sample rundown of the faetures can be found in this youtube video:
- animated loading screen for almost every champion
- live elo retrival utilizing the riot api
- common item paths from champion.gg
- lore text to speech utilizing google tts
- create custom gradients
- display a heatmap based on mouse clicks, mouse position
- overlay over background image
- export image
Image ovelay - transparent gradient Custom on the fly gradient Mouse movement
Converts any text send to the bot via the league chat to a speech output in teamspeak. The google api is queried to convert the text to speech. Java is used to connect to the xmpp server and relay the information to the sinus bot using thr ts query account and a javascript attention is used to filters the request for the different accent requests.
- Displays the days until an account will deacay in every queue.
- A click in the login cell will terminate the currently open lol client process, open a new instance and move the mouse to the username and password field to type in the correct values as well as submitting the query with enter
. . .
. . .
- Functional Twitch Chat overlay
- Toggle Chat with CRTL Enter
- Choose Background Alpha
- Custom League Emoticions
- Twitch Emoticon Support
. . .
. . .
. . .
- mirrors all messages written to the bot to all users on the friendlist
- global and local mute list
- moderator commands to bann users and filter keywords
- game search feature. !lf ELO (MODIFIER) MESSAGE will send a message to every person joining the chatroom (comming online or leaving a game). Once !full is called, the lobby owner joins the queue or the lobby is destroyed the search is deemed invalid.
- Whisper feature for members
- Auto accepts friend requests
- Multi bot and region support allows chats between different regions, and gets rid of chat room size limitations.
http://liga-der-gentlemen.de/index.php/Thread/2965-Gruppensuche-2-0
The management gui is a sceleton javafx application which allows individual modules to register itself for easy extensibility. It provides global information regarding keyboard and mouse states, the league game state, the current username and champion, the path to the league directory and initalizes Apis (caching) and logging facades.
A module usually consits out of 3 components
- A class which extends the Module class and takes care of the logic
- (Optional) a javafx pane which will be displayed in the manager gui for user settings
- (Optional) a javafx/swing windows which will be spawned once the user actives the module
public class HelloWorldModule extends Module /* optional */ implements GlobalKeyListener, LolGameEventListener {
public HelloWorldModule(ModuleManager moduleManager) {
super(moduleManager, "Module Long Name", "Module Short Name");
this.managerPanel = new HelloWorldPane(shortName);
//Do we want to work with apis? Simply create an new instance whenever needed
RiotAPI riot = new RiotAPI();
OpGGAPI = opGG = new OpGGAPI();
GoogleTTS tts = new GoogleTTS();
}
/**
* Gets called once the user clicks on the chatbox in the gui manager
*
*/
@Override
protected void setActive() {
//optional
if(isActive) {
//Do we want key and mouse listener?
moduleManager.registerGlobalKeyboardListener(this);
//Do we want to be notified if the user joins a game?
moduleManager.registerLoLGameEventListener(this);
//Spawn overlay window
}else {
//Do we want key and mouse listener?
moduleManager.unregisterGlobalKeyboardListener(this);
//Do we want to be notified if the user joins a game?
moduleManager.unregisterLoLGameEventListener(this);
//Hide overlay window
}
}
//Do event based logic
@Override
public void CurrentGameDataReady(CurrentGameInfo gameInfo) {}
@Override
public void LoadingScreenEntered(String[] champNames, int mapID) {}
@Override
public void GameEntered() {}
@Override
public void GameEndScreenShown() {}
@Override
public void GameWindowExited() {}
@Override
public void keyPressed(GlobalKeyEvent arg0) {}
@Override
public void keyReleased(GlobalKeyEvent arg0) {}
}
Pane which will be integrated into the manager
//Controller class for the javafx pane
public class HelloWorldPane extends ModuleManagerPane{
@FXML
private Button btn;
public HelloWorldPane(String description) {
//Load fxml and set controler
super(description, HelloWorldPane.class);
btn.setOnAction((event) -> System.out.println("Hello World"));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" type="TitledPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<content>
<Button fx:id="btn" mnemonicParsing="false" text="Button" />
</content>
</fx:root>
Modules have the ability to send requests to other modules without explizitly knowing of them. For example the login manager asks all modules which keep track of keystrokes to halt operation for the duration the password is typed in.
public HelloWorldModule(ModuleManager moduleManager) {
super(moduleManager, "Module Long Name", "Module Short Name");
this.managerPanel = new HelloWorldPane(shortName);
//Suggest every module which implements GlobalKeyListener to halt operation
moduleManager.notifyModuleGeneric(GlobalKeyListener.class, this, ModuleEvent.HALT_OPERATION, null);
//Send a custom event and payload to the keyboard overlay module
moduleManager.notifyModule(KeyBoardMouseOverlayModule.class, this, ModuleEvent.CUSTOM_EVENT, new Object[] {"Custom value"});
}