Python利用LCU接口实现LOL(英雄联盟)一键载入自定义天赋(符文)

news/2024/11/24 16:51:53/

文章目录

  • 1. 本文内容
  • 2. LOL LCU接口
    • 2.1 获取LOL客户端信息
    • 2.2 LCU接口调用
  • 3. LCU天赋接口实战
  • 4. 总结
  • 参考资料

1. 本文内容

本文会介绍如何编写一个LOL一键载入自定义天赋。

最终效果如下:

在这里插入图片描述

源代码地址:https://github.com/iioSnail/lol_custom_rune


exe下载地址:百度网盘


本节会重点介绍有关LOL接口的部分,对GUI部分不进行过多介绍。

2. LOL LCU接口

要想和LOL客户端进行交互,需要使用官方提供的LCU接口,所有的第三方工具都是通过这些接口实现的。

在使用LCU接口前需要获取IP、端口和Token。

2.1 获取LOL客户端信息

  1. 首先登录游戏

  2. 登录游戏后使用管理员权限运行cmd,然后输入如下命令:

wmic PROCESS WHERE name='LeagueClientUx.exe' GET commandline

之后你会的得到如下输出:

C:\Users\XHXIAIEIN>wmic PROCESS WHERE name='LeagueClientUx.exe' GET commandline
CommandLine"D:/Game/league of legends cn/英雄联盟/LeagueClient/LeagueClientUx.exe"
"--riotclient-auth-token=PVBsuiBiaNdAdIAnDoNg7yisxg"
"--riotclient-app-port=63381"
"--riotclient-tencent"
"--no-rads"
"--disable-self-update"
"--region=TENCENT"
"--locale=zh_CN"
"--t.lcdshost=hn1-sz-feapp.lol.qq.com"
"--t.chathost=hn1-sz-ejabberd.lol.qq.com"
"--t.lq=https://hn1-sz-login.lol.qq.com:8443"
"--t.storeurl=https://hn1-sr.lol.qq.com:8443"
"--t.rmsurl=wss://sz-rms-bcs.lol.qq.com:443"
"--rso-auth.url=https://prod-rso.lol.qq.com:3000"
"--rso_platform_id=HN1"
"--rso-auth.client=lol"
"--t.location=loltencent.sz.HN1"
"--tglog-endpoint=https://tglogsz.datamore.qq.com/lolcli/report/"
"--t.league_edge_url=https://ledge-hn1.lol.qq.com:22019"
"--ccs=https://cc-hn1.lol.qq.com:8093"
"--dradis-endpoint=http://some.url"
"--remoting-auth-token=lgxHX-LuAnDaXbyzA08w"        <---⭐ 找到这个参数 `--remoting-auth-token=XXX`
"--app-port=63405"                                  <---⭐ 找到这个参数 `--app-port=XXX`
"--install-directory=d:\game\league of legends cn\鑻遍泟鑱旂洘\LeagueClient"
"--app-name=LeagueClient"
"--ux-name=LeagueClientUx"
"--ux-helper-name=LeagueClientUxHelper"
"--log-dir=LeagueClient Logs"
"--crash-reporting=none"
"--crash-environment=HN1"
"--app-log-file-path=d:/game/league of legends cn/英雄联盟/LeagueClient/../Game/Logs/LeagueClient Logs/2022-08-03T14-38-37_8368_LeagueClient.log"
"--app-pid=8368"
"--output-base-dir=d:/game/league of legends cn/鑻遍泟鑱旂洘/LeagueClient/../Game"
"--no-proxy-server"

我们需要从这些输出中提取出以下三项:

--remoting-auth-token=lgxHX-LuAnDaXbyzA08w
--app-pid=8368
--app-port=63405

之后我们就可以调用LCU接口了,IP固定为127.0.0.1,端口为--app-port,这里是63405,例如:

获取当前天赋:

GET https://127.0.0.1:63405/lol-perks/v1/currentpage

2.2 LCU接口调用

我们获取到端口后,就可以通过https调用了,注意:必须用https

LCU接口可以在LCU API 速查手册这里查询到,你也可以参考LOL第三方工具frank(github)项目的lcu.js文件。

在调用前,还需要构造http headers,需要包含如下三条内容:

{"Accept": "application/json","Content-Type": "application/json","Authorization": "Basic " + auth
}

其中auth是使用base64对riot:${remoting-auth-token}进行加密后的得到的结果,使用过Python实现为:

import base64token = "lgxHX-LuAnDaXbyzA08w"
auth = base64.b64encode(("riot:" + token).encode("UTF-8")).decode("UTF-8")
authorization = "Basic " + auth

当构建好headers后,就可以按照API文档调用了,使用Python实现如下:

import requestsurl = "https://127.0.0.1:63405/lol-perks/v1/pages"headers = {"Accept": "application/json","Content-Type": "application/json","Authorization": "Basic " + auth
}resp = requests.get(url, headers=headers, verify=False)
if not resp.ok:utils.error("获取符文页失败!")returnresp_content = resp.text

3. LCU天赋接口实战

知道LCU接口的基本用法,就可以进行实战了,本项目使用了天赋接口。其path为 /lol-perks/v1/pages,其中增删改查分别对应的是POSTGETDELET


获取天赋

  • Method: GET
  • Path: /lol-perks/v1/pages

请求参数:无

请求响应:

[{"autoModifiedSelections": [],"current": false, # 是否是当前选择的天赋页"id": 1934761678, # 天赋页id,删除时需要用到"isActive": false, "isDeletable": true,"isEditable": true,"isValid": true,"lastModified": 1658841402785,"name": "布里茨 By Frank", # 符文页的名称"order": 0, # 符文页顺序,第一页"primaryStyleId": 8400, # 主系id"subStyleId": 8300, # 副系id"selectedPerkIds": [ 8439, # 主系第18446, # 主系第28429, # 主系第38451, # 主系第48345, # 副系第18347, # 副系第25007, # 通用第15002, # 通用第25001  # 通用第3],},...
]

Python实现:

url = self.url + "/lol-perks/v1/pages"resp = requests.get(url, headers=self.headers, verify=False)
if not resp.ok:utils.error("获取符文页失败!")returnresp_content = resp.text

删除天赋

  • Method: DELETE
  • Path: /lol-perks/v1/pages/${runeId}

请求参数:请求参数在path上,${runeId}就是上面天赋页中的id

请求响应:无

python实现:

url = self.url + "/lol-perks/v1/pages/" + str(runes[index]['id'])
resp = requests.delete(url, headers=self.headers, verify=False)
if not resp.ok:utils.error("删除符文失败!")return

写入天赋

  • Method: POST
  • Path: /lol-perks/v1/pages/${runeId}

请求参数:

{"autoModifiedSelections": [],"current": true,"name": "测试符文页","order": 0,"primaryStyleId": 8400,"subStyleId": 8300,"selectedPerkIds": [8439,8446,8429,8451,8345,8347,5007,5002,5001]
}

请求响应:无

python实现:

url = self.url + "/lol-perks/v1/pages"
resp = requests.post(url, json=rune_json, headers=self.headers, verify=False)
if not resp.ok:utils.error("载入符文页失败!")return

4. 总结

根据上面的LCU接口,再结合简单的封装与GUI设计,即可实现自定义天赋工具。代码详情请参考项目源码





参考资料

LeagueCustomLobby(github): https://github.com/XHXIAIEIN/LeagueCustomLobby

LCU API 速查手册: http://www.mingweisamuel.com/lcu-schema/tool/#/

LOL第三方工具frank(github): https://github.com/Java-S12138/frank


http://www.ppmy.cn/news/287927.html

相关文章

数据结构与算法(二)

树形结构篇 前面我们学习了线性相关的数据结构&#xff0c;了解了顺序表和链表两种类型&#xff0c;我们接着来看树形结构。这一章会更加考验各位小伙伴的数学功底以及逻辑思维&#xff0c;难度会更大一些。 树与森林 树是一种全新的数据结构&#xff0c;它就像一棵树的树枝…

iPhonexr安兔兔html5测试,iPhone XR 安兔兔跑分出炉!竟与 iPhone XS 相差无几

今天下午3点01分&#xff0c;苹果就将正式接受 iPhone XR 预定&#xff0c;不少果粉还处在观望状态&#xff0c;到底买哪款新 iPhone 才是最好的呢&#xff1f; 与 iPhone XS 相比&#xff0c;iPhone XR 不仅价格更有优势&#xff0c;也支持双卡双待功能。今天&#xff0c;安兔…

苹果推出iPhone 12,价格比你想象中更实惠

今天是苹果公司一个重要日子&#xff0c;它发布了一系列的产品线&#xff0c;其中包括iPhone 12 Mini&#xff0c;iPhone 12&#xff0c;iPhone 12 Pro和iPhone 12 Pro Max。 苹果公司拥抱5G&#xff0c;Apple的大事件随着HomePod Mini的发布而拉开帷幕&#xff0c;但真正的重…

iphone h5 拍摄_如何使用iPhone拍摄专业电影

iphone h5 拍摄 Making movies on your smartphone has always been simple, but more often than not you can expect that the quality will suffer because of shaky images, out-of-focus lenses, and sound that’s better left to the deaf. Now all that can change wit…

iPhone5C三大看点:性能不输iPhone5 或售3399元

乐杨俊编辑修改转载&#xff1a; iPhone 5C的发售时间或最早在9月18日&#xff0c;抢在中秋节前&#xff1b;最迟至国庆十一假期期间。 【IT商业新闻网综合讯】&#xff08;记者 林涛&#xff09;苹果2013年秋季发布会还有几个小时即将开幕&#xff0c;除了iPhone 5S、Macbook …

iphone13预计上市时间 苹果13多少钱

按照以往惯例&#xff0c;苹果将会在今年9月份召开秋季新品发布会&#xff0c;其中将会带来最新一代手机产品——iPhone 13系列。iphone手机爆降1800这活动太给力了机会不容错过http://apple.adiannao.cn/2 虽然目前全新芯片状况不容乐观&#xff0c;但根据供应链传出的最新消息…

iPhone5的十大竞争对手

历经几个月的等待&#xff0c;苹果iPhone 5终于揭开面纱&#xff0c;广泛而热烈的反响也随之而来。支持4G、更大的屏幕和进一步优化的处理器&#xff0c;无不证明了苹果迈出了伟大的一步。 然而&#xff0c;并无新意的设计、缺乏近场通信和&#xff1f;529的沉重价签&#xff0…

iPhone12充电功率多少W

这届新iPhone的最大争议点应该是iPhone12不配充电头了吧&#xff0c;本以为会像去年一样附带支持PD快充的USB-C充电头&#xff0c;毕竟5V1A确实适应不了现在的快充节奏&#xff0c;但是iPhone12直接不配充电头着实让人很意外。那么iPhone12充电头怎么选&#xff0c;iPhone12充电…