xgerhard / destiny-api-wrapper
Destiny 2 API 的 PHP 封装器
Requires
- php: >=5.3.0
- guzzlehttp/guzzle: ~6.0
This package is auto-updated.
Last update: 2024-09-14 02:46:06 UTC
README
用于 Destiny 2 API 的 PHP 客户端/API 封装器
安装
运行以下命令
composer require xgerhard/destiny-api-wrapper
用法
DestinyClient
获取您的 API 密钥: https://bungie.net/en/application
$oDestiny = new Destiny\Client('Bungie-API-key-here');
搜索玩家
use Destiny\Client; use Destiny\Exceptions\PlayerNotFoundException; try { $oDestiny = new Destiny\Client('Bungie-API-key-here'); $oPlayer = $oDestiny->searchPlayer('xgerhard'); echo $oPlayer->membershipId; // 4611686018467322796 echo $oPlayer->membershipType; // 4 echo $oPlayer->displayName; // xgerhard#21555 // There are multiple ways of searching a player // Search on all platforms by player username $oPlayer = $oDestiny->searchPlayer('xgerhard'); // Search on specific platform by player username (1 = xbox, 2 = ps, 3 = pc) $oPlayer = $oDestiny->searchPlayer('xgerhard', 1); // Search by BungieNet uniqueName // Set an unique ID here: https://www.bungie.net/en/Profile/Settings/?category=AboutMe // Link the platforms you play on here: https://www.bungie.net/en/Profile/Settings/?category=Accounts // By using profiles->getCurrent you will receive the platform you played on most recently $oPlayer = $oDestiny->searchUser('xgerhard')->profiles->getCurrent(); // Combination of searchPlayer & searchUser // Search by platform username first, if no results search by uniqueName on BungieNet $oPlayer = $oDestiny->searchPlayerUser('xgerhard'); // Search on specific platform only, if no results search by uniqueName on BungieNet $oPlayer = $oDestiny->searchPlayerUser('xgerhard', 1); // $oPlayer = Destiny\Player } catch(PlayerNotFoundException $e) { // If no players could be found echo $e->getMessage(); }
loadPlayer
如果您将玩家详细信息存储在例如数据库中,您可以通过提供(至少)玩家的 membershipType
和 membershipId
来加载 Destiny\Player
对象。
use Destiny\Client; use Destiny\Exceptions\InvalidPlayerParametersException; try { $oDestiny = new Destiny\Client('Bungie-API-key-here'); $oPlayer = $oDestiny->loadPlayer([ 'membershipType' => 4, 'membershipId' => '4611686018467322796', 'displayName' => 'xgerhard#21555' ]); // $oPlayer = Destiny\Player } catch(InvalidPlayerParametersException $e) { // If required player data is missing echo $e->getMessage(); }
Destiny\Player
角色集合
玩家角色存储在角色集合中。可以通过查询此集合来获取角色数据。
getAll()
返回所有角色
$oPlayer = $oDestiny->searchPlayer('xgerhard'); $aCharacters = $oPlayer->characters->getAll(); /* Array ( [2305843009301405871] => Destiny\Character Object ( [membershipId] => 4611686018467322796 [membershipType] => 4 [characterId] => 2305843009301405871 .... ) [2305843009301408262] => Destiny\Character Object ( [membershipId] => 4611686018467322796 [membershipType] => 4 [characterId] => 2305843009301408262 .... ) ) */
getCurrent()
返回当前(最后玩的)角色
$oPlayer = $oDestiny->searchPlayer('xgerhard'); $aCharacters = $oPlayer->characters->getCurrent(); /* Destiny\Character Object ( [membershipId] => 4611686018467322796 [membershipType] => 4 [characterId] => 2305843009301408262 [dateLastPlayed] => 2019-06-22T15:43:44Z [minutesPlayedThisSession] => 30 .... ) */
fetch()
要获取角色,需要提供组件列表,默认情况下将加载并获取所有组件(库存、进度、活动等)。为了减少 Destiny\CharacterCollection
对象的大小并可能加快代码速度,您可以手动提供这些组件。
当 fetch()
完成时,将返回所有角色(函数 getAll()
)。
$oPlayer = $oDestiny->searchPlayer('xgerhard'); // If I only need the characters data (for example: characterId, dateLastPlayed) $aCharacters = $oPlayer->characters->fetch([200]); // If I want to check characters inventory $oPlayer->characters->fetch([ 200, // Character basic info 205, // Character equipment 300, // Item instances 305 // Item sockets ]); // Get primary weapon for all characters foreach($oPlayer->characters->getAll() as $oCharacter) { $oPrimary = $oCharacter->inventory->get('primary'); } // Or just for the current character $oPlayer->characters->getCurrent()->inventory->get('primary');
Destiny\Character
库存集合
角色具有库存属性,使用 'get' 函数请求库存/装备物品。第一个参数是物品标识符,第二个参数是包含天赋详情的布尔值。
$oPlayer = $oDestiny->searchUser('xgerhard')->profiles->getCurrent(); // Fetch character data, including equipment, item instances, item sockets $oCurrentCharacter = $oPlayer->characters->getCurrent([200, 205, 300, 305]); $oPrimary = $oCurrentCharacter->inventory->get('primary', true)); /* Destiny\EquipmentItem Object ( [itemInstanceId] => 6917529067574353832 [itemHash] => 347366834 [name] => Ace of Spades [bucketTypeHash] => 1498876634 [light] => 750 [quantity] => 1 [perks] => Array ( [0] => Memento Mori [1] => Corkscrew Rifling [2] => High-Caliber Rounds [3] => Firefly [4] => Smooth Grip [5] => Last Hand [6] => Empty Catalyst Socket ) ) */ // $oPrimary = Destiny\EquipmentItem
第一个参数可以是数组,以请求多个物品。
$aItems = $oCurrentCharacter->inventory->get(['helmet', 'chest']); /* Array ( [helmet] => Destiny\EquipmentItem Object ( [itemInstanceId] => 6917529088474208321 [itemHash] => 2124666626 [name] => Wing Discipline [bucketTypeHash] => 3448274439 [light] => 750 [quantity] => 1 ) [chest] => Destiny\EquipmentItem Object ( [itemInstanceId] => 6917529085963882227 [itemHash] => 2562470699 [name] => Tangled Web Plate [bucketTypeHash] => 14239492 [light] => 750 [quantity] => 1 ) ) */
Manifest
Manifest 是一个包含有关物品/活动等信息的数据库。您可以通过使用物品的哈希值来查询数据库。
getManifest()
$oManifest = $oDestiny->getManifest(); $oItem = $oManifest->getDefinition('InventoryItem', 3588934839); /* stdClass Object ( [displayProperties] => stdClass Object ( [description] => "Wings flutter. Beauty distracts. Poison injects. The butterfly's curse extends to your enemies. A short life, shortened further by your hand." —Ada-1 [name] => Le Monarque [icon] => /common/destiny2_content/icons/4b66c583e88a316cc3b0cf017a3e9a7b.jpg [hasIcon] => 1 ) .... */ // $oManifest = Destiny\Manifest
updateManifest()
为了保持数据库的最新状态,例如新物品,您可以使用此函数检查更新。如果函数的响应为 true,则 Manifest 已更新或已是最新的。
var_dump($oDestiny->updateManifest()); /* bool(true) */
许可证
此 Destiny API 封装器是开源软件,许可协议为 MIT 许可证。