LoLでCSを落とすとメスガキに罵倒される『ドM専用コーチングツール』をPythonで作った話
LoLでCSを落とすとメスガキに罵倒される『ドM専用コーチングツール』をPythonで作った話
こんにちは、個人開発者のりっとんです。
突然ですが、League of Legends (LoL) というゲーム、難しくないですか?
特にレーナーの基礎であるCS(クリープスコア)。
「練習しなきゃ」と思っても、優しく指摘されるだけじゃ甘えてしまう……。
「いっそ、CSを落とすたびにメスガキに罵倒されれば、悔しくて上手くなるのでは?」
そんな歪んだ動機で、 『LoL CS Auto Coach(罵倒版)』 を開発しました。
今回は、このツールの 技術的な仕組み(Riot APIの活用) と、なぜBANされず安全なのかという点について、ソースコードを交えて解説します。
完成したもの
実際に動作している様子がこちらです。
【機能】
- 試合開始から3分後、監視スタート。
- リアルタイムで分間CS (CSPM) を計算。
- 基準値を下回ると、 「はぁ?引退したら?」 などの罵倒ボイスが再生される。
▼ 完成品(exe版)はBOOTHで無料配布しています
技術的な仕組み:なぜ「安全」なのか
「外部ツールってBANされるんじゃないの?」と不安になる方もいると思います。
結論から言うと、このツールは ホワイト(安全) な設計で作られています。
チートツールとの違い
-
× 一般的なチート(BAN対象):
- ゲームのメモリを直接読み書きする。
- パケットを解析・送信する。
- キャラクターを自動操作する。
-
◎ 今回作ったツール:
- Riotが公式に提供しているローカルAPIを叩いて、数字を見ているだけ。
- ブラウザで戦績サイトを見るのと仕組みは同じです。
Riot Live Client Data API とは
LoLのクライアントが起動している間、PC内部(ローカルホスト)でWebサーバーが立ち上がっており、以下のURLにアクセスするとJSON形式で試合データが取得できます。
[https://127.0.0.1:2999/liveclientdata/allgamedata](https://127.0.0.1:2999/liveclientdata/allgamedata)
本ツールは、PythonでこのURLに定期的にアクセスし、「あ、こいつCS落としたな」と判定して音を鳴らしているだけです。ゲームサーバーへの干渉は一切ありません。
ソースコード全公開
「exeファイルを実行するのはウイルスとか怖くて無理」というエンジニアの方向けに、GitHubでソースコードを完全公開しました。
中身を見ていただければ、怪しい通信を行っていないことが分かります。
▼ GitHubリポジトリ
実装のポイント(Python)
主要なロジック部分の抜粋です。requests ライブラリでAPIを叩いています。
import requests
import urllib3
import time
# ローカルAPIは自己署名証明書のため、SSL警告を無視する設定が必要
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def get_api_data(endpoint):
url = f"[https://127.0.0.1:2999/liveclientdata/](https://127.0.0.1:2999/liveclientdata/){endpoint}"
try:
# verify=False でSSL検証をスキップ
response = requests.get(url, verify=False, timeout=2)
return response.json()
except:
return None
# メインループの一部
while True:
# プレイヤーリストを取得
data = get_api_data("playerlist")
# 自分のCSを取得して計算
my_stats = [p for p in data if p["summonerName"] == MY_NAME][0]
cs = my_stats["scores"]["creepScore"]
# 分間CS (CSPM) の計算
game_time = get_game_time()
cspm = cs / (game_time / 60)
# 基準以下なら罵倒する
if cspm < 6.0:
play_insult_voice()
誤検知について(VirusTotal等)
Pythonを PyInstaller でexe化すると、Windows Defenderや一部のセキュリティソフトで「トロイの木馬」として誤検知されることがあります(Python製アプリあるあるです)。
もしexe版の警告が不安な方は、上記の GitHubからコードをDLして、Python環境で直接実行 してください。全く同じ動作をします。
配信者・ストリーマーの方へ(Mod機能)
このツール、ただ罵倒されるだけではありません。
「音声ファイルの差し替え(Mod機能)」 に対応させました。
1. 推しの声に変更可能
assets フォルダ内の .wav ファイルを入れ替えるだけで、好きな音声に変更できます。
リスナーから罵倒ボイスを募集して 「リスナーに詰められながらLoLをする参加型配信」 などが可能です。
2. 特定チャンピオン専用ボイス
「ヤスオを使っている時だけ流れるボイス」も作れます。
assets/champion_specific フォルダに以下のルールでファイルを入れるだけです。
Yasuo_trash.wav
Yone_trash.wav
# チャンピオン名を取得(スペース除去)
champ_name = current_champion_name.replace(" ", "")
# 専用ファイルがあるか確認
target_file = f"{champ_name}_trash.wav"
if os.path.exists(target_file):
play(target_file) # 専用ボイス再生
else:
play_random_trash() # 汎用罵倒再生
おわりに
「技術の無駄遣い」 と言われるかもしれませんが、こういうツール作りが一番プログラミングを楽しめる瞬間だと思います。
もしバグ報告や、「こんな機能が欲しい」などの要望があれば、X(Twitter)までご連絡ください。
▼ ダウンロード(無料)
▼ ソースコード
▼ 開発者Twitter
※本ツールで使用している音声:VOICEVOX:春日部つむぎ
Discussion