xpaw / steamid
SteamID转换库
Requires
- php: >=8.1
- ext-gmp: *
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.3
This package is auto-updated.
Last update: 2024-08-29 18:26:09 UTC
README
此64位结构用于识别Steam网络上的各种对象。此库提供了一种轻松处理SteamID并使转换变得简单的方法。
此库不使用像在Valve开发者Wiki中描述或许多其他功能中使用的减法技巧。
SteamID.php需要现代PHP版本,并且需要安装GMP模块以执行64位数学运算。
简要概述
SteamID由四个部分组成:其宇宙、其类型、其实例和其账户ID。
- 宇宙:目前有5个宇宙。宇宙是Steam的唯一实例。您可能只会与公共宇宙交互,即常规Steam。只有Valve员工可以访问非公共宇宙。
- 类型:SteamID的类型确定它标识的内容。最常见的类型是用于用户账户的个人。还有其他类型,如部落(Steam组)、游戏服务器等。
- 实例:目前Steam允许三个同时的用户账户实例(1 = 桌面,2 = 控制台,4 = 网络,0 = 所有)
- 账户ID:这代表一种类型的唯一账户。
使用此库
使用它非常简单,因为构造函数会自动识别给定的输入并从那里施展其魔法。如果提供的SteamID格式无效,则会抛出InvalidArgumentException
。您可以在给定的SteamID实例上调用IsValid
来执行各种检查,以确保给定的账户类型/宇宙/实例是正确的。您可以通过查看测试文件来了解如何操作SteamID的多个示例。
示例
try { // Constructor also accepts Steam3 and Steam2 representations $s = new SteamID( '76561197984981409' ); } catch( InvalidArgumentException $e ) { echo 'Given SteamID could not be parsed.'; } // Renders SteamID in it's Steam3 representation (e.g. [U:1:24715681]) echo $s->RenderSteam3() . PHP_EOL; // Renders SteamID in it's Steam2 representation (e.g. STEAM_0:1:12357840) echo $s->RenderSteam2() . PHP_EOL; // Converts this SteamID into it's 64bit integer form (e.g. 76561197984981409) echo $s->ConvertToUInt64() . PHP_EOL;
还可以查看VanityURLs.php
以解析任何用户输入,包括URL。如果您要处理用户输入,则只需使用SteamID::SetFromURL()
即可。
SteamID标准化
如果您运行了一个用户可以输入自己的SteamID的网站,有时您可能会遇到设置了错误的宇宙或instanceid的SteamID,这将导致一个完全不同但有效的SteamID。为了避免这种情况,您可以操作给定的SteamID并将宇宙设置为公共宇宙,将实例设置为桌面。
try { $s = new SteamID( $ID ); if( $s->GetAccountType() !== SteamID::TypeIndividual ) { throw new InvalidArgumentException( 'We only support individual SteamIDs.' ); } else if( !$s->IsValid() ) { throw new InvalidArgumentException( 'Invalid SteamID.' ); } $s->SetAccountInstance( SteamID::DesktopInstance ); $s->SetAccountUniverse( SteamID::UniversePublic ); var_dump( $s->RenderSteam3() ); // [U:1:24715681] var_dump( $s->ConvertToUInt64() ); // 76561197984981409 } catch( InvalidArgumentException $e ) { echo $e->getMessage(); }
执行这些步骤后,您可以通过调用RenderSteam3
、RenderSteam2
或ConvertToUInt64
来获取标准化的SteamID。
请参阅Example.php
以获取完整的示例。
函数
新的Steam邀请URL
Valve推出了分享个人资料URL的新方法(https://s.team/p/hjqp或https://steamcommunity.com/user/hjqp)。编码是简单的十六进制编码账户ID,每个字母被替换为自定义字母表。虽然HEX最初是0-9a-f
,但在转换版本中,数字和字母a
或e
不包括在内,但它们仍然可以在URL中使用,因为Valve进行了一次性替换。
此库在SetFromURL
函数中本机支持解析s.team/p/
或steamcommunity.com/user/
URL。
以下是替换映射