Flutter游戏集成插件fortnite_2的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter游戏集成插件fortnite_2的使用

Fortnite 2.0 包

这是一个用于使用非官方Epicgames/Fortnite API的包。该包基于fortnite包。

安装

在你的pubspec.yaml文件中添加以下依赖:

dependencies:
    fortnite_2: any

然后在终端运行以下命令:

dart pub get

如何使用

首先,你需要从一个类似下面的URL获取授权令牌: https://www.epicgames.com/id/api/redirect?clientId=3446cd72694c4a4485d81b77adbb2141&responseType=code

你也可以通过调用Dart中的函数来获取此URL:

getAuthorizationCodeURL();

接下来,你需要创建一个设备认证对象。你可以通过使用从URL中获取的授权码来完成此操作:

deviceAuth = await authenticateWithAuthorizationCode(
  authorizationCode, // 授权码
);

建议将设备认证写入文件或云存储,因为你每次访问玩家特定数据并初始化客户端对象时都需要它。以下是将设备认证写入文件的示例:

final File deviceAuthFile = File("device_auth.json");

await deviceAuthFile.writeAsString(
  JsonEncoder().convert({
    "accountId": deviceAuth.accountId,
    "deviceId": deviceAuth.deviceId,
    "secret": deviceAuth.secret,
    "displayName": deviceAuth.displayName,
  }),
);

从文件读取设备认证的方式如下:

final Map<String, dynamic> deviceAuthDetails = 
  jsonDecode(await deviceAuthFile.readAsString());
deviceAuth = DeviceAuth.fromJson(deviceAuthDetails);

接下来,你需要初始化客户端。可以这样操作:

final Client client = Client(
  options: ClientOptions(
    log: true,
    deviceAuth: deviceAuth,
    logLevel: Level.ALL,
  ),
  overrideSession: "",
)..onSessionUpdate.listen((update) {
    print("Session updated for ${update.accountId}");
    /// 任何你想在会话更新时执行的函数。
});

接下来,初始化客户端配置文件。可用的配置文件列表如下:

  • commoncore(购买、VBucks、创作者代码)
  • athena(皮肤、与外观相关的物品)
  • friends(好友列表、黑名单、添加、删除等)
  • events(获取赛季活动及认证用户的锦标赛数据)

你可以通过调用每个配置文件的init()函数来初始化它们:

await client.commonCore.init();

初始化配置文件后,你可以访问其属性,例如好友配置文件的好友列表:

client.friends.friendsList;

使用该包能做些什么

活动
函数 描述
events 返回赛季的活动列表
tokens 返回玩家拥有的令牌列表。令牌是在竞技场达到新段位或解锁新活动时获得的。
getEventHistory 返回认证玩家的活动结果列表。
getEventWindowHistory 返回认证玩家的活动窗口结果。
getEventFlags 返回活动标志(不确定此功能的用途)。

你可以像这样访问活动功能:

client.events.init();
client.events.events;
好友
函数 描述
friendsList 认证玩家的好友列表
blockList 认证玩家的黑名单
add 使用账户ID添加好友
delete 使用账户ID删除好友
accept 使用账户ID接受好友请求
decline 使用账户ID拒绝好友请求
block 使用账户ID屏蔽好友
unblock 使用账户ID取消屏蔽好友
setNickname 使用账户ID设置好友昵称
removeNickname 使用账户ID移除好友昵称
getMutuals 返回你和某个好友共同的好友列表

你可以像这样访问好友功能:

client.friends.init();
client.friends.friendsList;
公共核心
函数 描述
accountId 认证玩家的账户ID
created 创建Epic账户的日期
servertime 用于账户的服务器时间
campaignAccess 如果玩家有STW则返回true
supportedCreator 用户当前支持的创作者
totalVbucks 玩家当前拥有的VBucks数量
vbucksPurchased 自创建账户以来购买的VBucks数量
vbucksBreakdown 当前拥有的VBucks的分解表
giftHistory 发送和接收礼物的账户ID列表
affiliateSetTime 设置附属的时间
refundToken 用户剩余的退款令牌数量
refundsUsed 自创建账户以来使用的退款次数
allowedToSendGifts 用户是否允许发送礼物
allowedToReceiveGifts 用户是否允许接收礼物
setSupportedCreator 允许用户设置新的创作者代码
currentMtxPlatform 当前的VBucks平台
setMTXPlatform 设置VBucks平台
supportedCreatorId 支持的创作者的账户ID

你可以像这样访问公共核心功能:

client.commonCore.init();
client.commonCore.accountId;
阿提娜
函数 描述
skins 玩家拥有的皮肤列表
backpacks 玩家拥有的背包列表
pickaxes 玩家拥有的镐列表
gliders 玩家拥有的滑翔伞列表
dances 玩家拥有的舞蹈列表
itemWraps 玩家拥有的物品包装列表
loadingScreens 玩家拥有的加载屏幕列表
musicPacks 玩家拥有的音乐包列表
skyDiveContrails 玩家拥有的跳伞轨迹列表
equippedSkin 玩家当前使用的皮肤
gold 玩家在公共区域拥有的金币数量
accountLevel 玩家的账户等级
battlePassLevel 当前的战斗通行证等级
battleStars 玩家拥有的战斗之星数量
totalBattleStars 在本赛季获得的总战斗之星数量
battlePassPurchased 是否购买了战斗通行证
lastMatch 上一场比赛结束的日期
seasonNumber 当前赛季的编号
storefront 完整的商店(捆绑包、皮肤、VBucks优惠等)

你可以像这样访问阿提娜功能:

client.athena.init();
client.athena.gold;
派对

(几乎每个派对功能都需要派对ID,因为我们没有实现Fortnite XMPP,所以我们只能通过获取邀请功能来获取它,因为当有人邀请你时会发送派对ID。目前无法获取你当前所在的派对ID。)

函数 描述
partyInvites 显示你收到的邀请
promoteMember 提升成员为领导者
partyLookup 获取有关派对的信息

该包还提供了许多STW功能和资源,你可以通过战役配置文件访问它们:

client.campaign.init();
client.campaign.homebase;

示例代码

import "dart:io";
import "dart:convert";
import 'package:fortnite_2/fortnite_2.dart';

final File deviceAuthFile = File("device_auth.json");

// 主函数
void main() async {
  DeviceAuth deviceAuth;

  if (!(await deviceAuthFile.exists())) {
    /// 获取授权码URL
    String authorizationCodeURL = getAuthorizationCodeURL();

    /// 打印URL到控制台
    print("从这里获取授权码: $authorizationCodeURL");

    stdout.write("输入授权码: ");
    String authorizationCode = stdin.readLineSync() ?? "";

    /// 从之前的URL获取授权码并使用它创建设备认证。
    /// 设备认证不会在你强制删除它或更改密码之前失效。
    deviceAuth = await authenticateWithAuthorizationCode(
      authorizationCode, // 授权码
    );

    /// 将设备认证写入文件
    await deviceAuthFile.writeAsString(
      JsonEncoder().convert({
        "accountId": deviceAuth.accountId,
        "deviceId": deviceAuth.deviceId,
        "secret": deviceAuth.secret,
        "displayName": deviceAuth.displayName,
      }),
    );
  }

  /// 从文件读取设备认证
  final Map<String, dynamic> deviceAuthDetails = 
    jsonDecode(await deviceAuthFile.readAsString());

  /// 创建设备对象
  deviceAuth = DeviceAuth.fromJson(deviceAuthDetails);

  /// 创建客户端对象
  final Client client = Client(
    options: ClientOptions(
      log: true,
      deviceAuth: deviceAuth,
      logLevel: Level.ALL,
    ),
    overrideSession: "",
  )..onSessionUpdate.listen((update) {
      print("会话已更新 ${update.accountId}");

      /// 任何你想在会话更新时执行的函数。
    });

  /// 初始化客户端的公共核心配置文件
  await client.commonCore.init();

  /// 打印公共核心配置文件数据中的VBucks
  print("${client.displayName} 你有 ${client.commonCore.totalVbucks} V-Bucks");
}

更多关于Flutter游戏集成插件fortnite_2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter游戏集成插件fortnite_2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中集成第三方插件,特别是像fortnite_2(需要注意,实际上并不存在一个名为fortnite_2的官方Flutter插件,这里假设它是一个假想的或者非官方的插件名称,用于演示目的),通常涉及以下几个步骤:在pubspec.yaml文件中添加依赖项、导入插件包、以及使用插件提供的功能。

以下是一个假设性的代码案例,展示如何在Flutter项目中集成并使用一个名为fortnite_2的插件(请注意,实际使用时,你需要替换为真实存在的插件):

1. 在pubspec.yaml文件中添加依赖项

首先,在你的Flutter项目的根目录下的pubspec.yaml文件中添加fortnite_2插件的依赖项(假设它存在于pub.dev上,或者是一个本地路径依赖):

dependencies:
  flutter:
    sdk: flutter
  fortnite_2: ^1.0.0  # 假设版本号为1.0.0,实际使用时请替换为真实版本号

如果你是在使用本地路径依赖(比如从Git仓库或本地文件系统),则依赖项可能看起来像这样:

dependencies:
  flutter:
    sdk: flutter
  fortnite_2:
    path: ../path/to/fortnite_2_plugin  # 替换为实际路径

2. 获取依赖项

在命令行中运行flutter pub get来获取新添加的依赖项。

3. 导入插件并在代码中使用

在你的Dart文件中导入fortnite_2插件,并使用它提供的功能。以下是一个假设性的示例,展示如何使用该插件(请注意,这里的代码完全是假设性的,因为fortnite_2插件并不真实存在):

import 'package:flutter/material.dart';
import 'package:fortnite_2/fortnite_2.dart';  // 导入fortnite_2插件

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fortnite 2 Plugin Demo'),
        ),
        body: Center(
          child: Fortnite2Button(),  // 假设Fortnite2Button是插件提供的一个按钮组件
        ),
      ),
    );
  }
}

// 假设Fortnite2Button是插件提供的一个组件,用于触发某些游戏相关的操作
class Fortnite2Button extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        // 使用插件提供的功能,比如启动游戏
        Fortnite2.launchGame().then((result) {
          // 处理结果,比如显示一个Snackbar
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(
              content: Text('Game launched: $result'),
            ),
          );
        }).catchError((error) {
          // 处理错误
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(
              content: Text('Failed to launch game: $error'),
              backgroundColor: Colors.red,
            ),
          );
        });
      },
      child: Text('Launch Fortnite 2'),
    );
  }
}

// 假设Fortnite2是一个提供静态方法的类
extension Fortnite2Extension on Fortnite2 {
  Future<String> launchGame() async {
    // 这里应该是插件内部实现启动游戏的逻辑
    // 返回一个表示操作结果的字符串(假设性)
    // 实际使用时,请参照插件文档了解如何正确使用其API
    return 'Success';  // 假设总是成功
  }
}

// 注意:上面的Fortnite2和Fortnite2Extension类和方法都是假设性的,
// 实际使用时,你需要参照真实插件的文档来了解其API和用法。

注意事项

  • 插件文档:在实际集成任何插件时,请务必查阅该插件的官方文档,了解其API、使用方法以及任何可能的限制或要求。
  • 版本兼容性:确保你的Flutter SDK版本与插件版本兼容。
  • 错误处理:在调用插件功能时,务必添加适当的错误处理逻辑,以处理可能发生的异常情况。
  • 本地开发和测试:在本地环境中充分测试插件的功能,确保它符合你的应用需求。
回到顶部