看了网上很多自己开发的英雄联盟的小助手工具,当时苦于没有api,自己也想做一个。后来发现了其实拳头本身就提供了LCU API在客户端运行的时候会暴露出来。

现在我们就来了解下工具的实现。

查询数据:http协议访问resuful接口,查询一些静态数据,如账号信息,排位信息,战绩等。

     websocket绑定接口,获取服务端发送过来的动态信息,如游戏进程,选英雄实时数据。

从上面我们得知,英雄联盟客户端在启动的时候一定会起来一个web服务,并且会有一些resuful接口和websocket信息的发送。

那我们如何获取到呢?只要我们打开英雄联盟客户端并且用管理员启动cmd,输入:

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

就能看到一些英雄联盟客户端启动的命令行信息。主要是获取其中的服务端口和token.

接下来我们只要解析其中的信息。获取字符串中的端口,token,进程号等信息。

using (Process p = new Process())
{
p.StartInfo.FileName = _cmdPath;
p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
p.StartInfo.RedirectStandardError = true; //重定向标准错误输出
p.StartInfo.CreateNoWindow = true; //不显示程序窗口
p.Start();
p.StandardInput.WriteLine(_excuteShell.TrimEnd('&') + "&exit");
p.StandardInput.AutoFlush = true;
string authenticate = await p.StandardOutput.ReadToEndAsync();
p.WaitForExit();
p.Close(); var authenticate = await GetAuthenticate();
if (!string.IsNullOrEmpty(authenticate) && authenticate.Contains("--remoting-auth-token="))
{
var tokenResults = authenticate.Split("--remoting-auth-token=");
var portResults = authenticate.Split("--app-port=");
var PidResults = authenticate.Split("--app-pid=");
var installLocations = authenticate.Split("--install-directory=");
Constant.Token = tokenResults[1].Substring(0, tokenResults[1].IndexOf("\""));
Constant.Port = int.TryParse(portResults[1].Substring(0, portResults[1].IndexOf("\"")), out var temp) ? temp : 0;
Constant.Pid = int.TryParse(PidResults[1].Substring(0, PidResults[1].IndexOf("\"")), out var temp1) ? temp1 : 0;
}
}

接下来我们需要启动http服务和websocket监听服务。

httpclient初始化:

public Task Initialize(int port, string token)
{
Port = port;
Token = token;
CreateHttpClient();
var authTokenBytes = Encoding.ASCII.GetBytes($"riot:{token}");
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(authTokenBytes));
_httpClient.BaseAddress = new Uri($"https://127.0.0.1:{port}/"); return Task.CompletedTask;
}

websocket初始化:

public Task Initialize(int port, string token)
{
_webSocket = new WebSocket($"wss://127.0.0.1:{port}/", "wamp");
_webSocket.SetCredentials("riot", token, true);
_webSocket.SslConfiguration.EnabledSslProtocols = SslProtocols.Tls12;
_webSocket.SslConfiguration.ServerCertificateValidationCallback = (response, cert, chain, errors) => true; _webSocket.OnMessage += WssOnOnMessage; return Task.CompletedTask;
} private void WssOnOnMessage(object sender, MessageEventArgs e)
{
if (!e.IsText) return; var eventArray = JArray.Parse(e.Data);
var eventNumber = eventArray[0].ToObject<int>();
if (eventNumber != ClientEventNumber) return;
var leagueEvent = eventArray[ClientEventData].ToObject<EventArgument>();
if (string.IsNullOrWhiteSpace(leagueEvent?.Uri))
return; MessageReceived?.Invoke(this, leagueEvent);
if (!_subscribers.TryGetValue(leagueEvent.Uri, out List<EventHandler<EventArgument>> eventHandlers))
{
return;
} eventHandlers.ForEach(eventHandler => eventHandler?.Invoke(this, leagueEvent));
}

接下来我们只要启动这些服务,然后根据拳头官方的LCU API就能够访问到本地的一些数据了。LCU API : https://lcu.vivide.re/

我这边用.net 6 +WPF+VS2022制作了一个LOL工具,大家可以作为参考,开源免费,如果觉得还可以打个星球球了。

github地址:BruceQiu1996/NPhoenix: 英雄联盟插件,支持修改段位,修改生涯背景,自动接受对局,设置符文,查看队友战绩,上等马分析等等 (github.com)

工具支持:

| 秒选英雄| 自动接受对局| 国服数据排行榜

查看英雄对位压制| 查看英雄优势对线| 5v5符文配置| 修改段位| 修改生涯背景

发送匹马信息到聊天界面| 查看召唤师战绩| 查看召唤师绝活英雄| 查看召唤师战绩详情

大乱斗秒选自己喜欢的英雄| 大乱斗符文推荐

下面是工具的一些截图:

.net6与英雄联盟邂逅之——根据官方LCU API制作游戏助手的更多相关文章

  1. 用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  2. python爬虫——《英雄联盟》英雄及皮肤图片

    还记得那些年一起网吧开黑通宵的日子吗?<英雄联盟>绝对是大学时期的风靡游戏,即使毕业多年的大学同学相聚,难免不怀念一番当时一起玩<英雄联盟>的日子. 今天就给大家分享一下英雄及 ...

  3. Android仿掌上英雄联盟首页,实现折叠效果

    概述 仿掌上英雄联盟首页的demo 详细 代码下载:http://www.demodashi.com/demo/10695.html 首页大概分为几个部分 状态栏 标题栏 轮播图 切换的Tab 资讯列 ...

  4. ROS机器人导航一 : 从英雄联盟到ROS导航

    写在前面: 这是这个系列的第一篇 本系列主要从零开始深入探索ROS(机器人操作系统)的导航和规划. 这个系列的目标,是让大家了解: 1.ROS的导航是怎么实现的 2.认识ROS里各种已有的导航算法,清 ...

  5. (转,感谢原作者!)既然选择了Linux,有何必在乎这些——Linux wine国服LOL英雄联盟,完美运行!!

    Linux下玩国服LOL,国服哦.网络上随处都可以搜到wine美服LOL的教程,但腾讯运营的国服客户端跟美服原版相差比较大,按照美服的方式不能搞起国服LOL,由于宿舍文化,这几天我专注于wine一个国 ...

  6. BZOJ5018[Snoi2017]英雄联盟——DP

    题目描述 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不 了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄,因此,他也只 ...

  7. BZOJ5018: [Snoi2017]英雄联盟

    Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不 了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄 ...

  8. BZOJ5018:[SNOI2017]英雄联盟(背包DP)

    Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤! 小皮球只会玩N个英雄 ...

  9. c# WinForm英雄联盟挂机源码及实现原理

    主要功能:全自动化英雄联盟挂机,游戏中会在原地放技能保持不掉线状态,游戏结束自动重新开始,自动选择英雄,可以晚上挂机刷人机: 缺陷:没怎么完善,如果掉线或者游戏崩溃网络断了软件会自动停止操作,使用时间 ...

随机推荐

  1. 如何彻底禁止 macOS Monterey 自动更新,去除更新标记和通知

    请访问原文链接:如何彻底禁止 macOS Monterey 自动更新,去除更新标记和通知,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 随着 macOS Montere ...

  2. css,html实现元素超出部分省略号

    .line-1 { height: 25px; width: 200px; overflow: hidden; text-overflow: ellipsis; display: -webkit-bo ...

  3. HMS Core使能AI智慧体验,共建创新应用生态

    5月17日,2022年搜狐科技峰会成功举办,峰会汇聚各界大咖,共同探讨AI 技术的深入应用以及行业数字化的发展趋势.华为终端云服务应用生态BU总裁望岳发表题为<使能AI智慧体验,共建创新应用生态 ...

  4. 透过实例demo带你认识gRPC

    摘要:gRPC是基于定义一个服务,指定一个可以远程调用的带有参数和返回类型的的方法.在服务端,服务实现这个接口并且运行gRPC服务处理客户端调用. 本文分享自华为云社区<gRPC介绍以及spri ...

  5. 【雅礼集训 2017 Day2】棋盘游戏

    loj 6033 description 给一个\(n*m\)的棋盘,'.'为可通行,'#'为障碍.Alice选择一个起始点,Bob先手从该点往四个方向走一步,Alice再走,不能走走过的点,谁不能动 ...

  6. docker服务部署、迁移与备份、dockerfile、私有仓库

    今日内容概要 服务部署 迁移与备份 dockerfile 私有仓库 内容详细 1.服务部署 # 装 mysql redis --->源码编译安装-->启 动 # 有了docker后,容器操 ...

  7. .NetCore实现图片缩放与裁剪 - 基于ImageSharp

    前言 (突然发现断更有段时间了 最近在做博客的时候,需要实现一个类似Lorempixel.LoremPicsum这样的随机图片功能,图片有了,还需要一个根据输入的宽度高度获取图片的功能,由于之前处理图 ...

  8. JS:三目运算符

    语法:条件表达式?表达式1:表达式0 注:当条件表达式为true则选择表达式1,反之false则选择表达式0 例: var a = 0; var b = 1; re=a>b?a:b consol ...

  9. windows下安装和使用virtualenvwrapper-win

    安装 pip安装 pip install virtualenv pip install virtualenvwrapper-win 修改默认创建环境的位置 创建环境变量 新建环境变量:WORKON_H ...

  10. SAP 上传 函数 ALSM_EXCEL_TO_INTERNAL_TABLE 不稳定

    ALSM_EXCEL_TO_INTERNAL_TABLE 这个函数的使用率非常高,然而有时候,它非常的不稳定,有时没有填充excel数据. 1.建议用户在开始运行界面程序之前先关闭Outlook. 2 ...