SteamID Конвертер
скажите пожалуйста, есть ли у кого то конвертер SteamID64 в SteamID. Все решения что есть в интернете очень старые и не подходят под PHP 7 и далее.
<?=$steam64['steamid']?> - здесь я получаю SteamID64
Как мне дальше преобразовать в SteamID формата STEAM_0: и так далее и вывести его на страницу ну допустим под переменной $steamid32?
В интернете куча решений, но ни одного под PHP 7
UPD: Пробовал вот этот код Сама библиотека:
<?php
class SteamIDConverter {
public static function convert($id)
{
if(strpos($id, 'STEAM')===false)
{ // It's a CommunityID
return self::getIDFromCommunity($id);
}
else
{ // It's a SteamID
return self::getCommunityFromID($id);
}
}
private static function getCommunityFromID($id)
{
$accountarray = explode(":", $id);
$idnum = $accountarray[1];
$accountnum = $accountarray[2];
$constant = '76561197960265728';
$number = bcadd(bcmul($accountnum, 2), bcadd($idnum, $constant)); // ($accountnum *2) + ($idnum + $constant)
return $number;
}
private static function getIDFromCommunity($id)
{
$idnum = '0';
$accnum = '0';
$constant = '76561197960265728';
if(bcmod($id, '2')==0)
{
$idnum = '0';
$temp = bcsub($id, $constant);
}
else
{
$idnum = '1';
$temp = bcsub($id,bcadd($constant, '1'));
}
$accnum = bcdiv($temp, '2');
return "STEAM_0:".$idnum.":".number_format($accnum, 0, '', '');
}
}
И функция вывода
echo SteamIDConverter::convert('$steam64');
Но выводит вот такие ошибки
Warning: bcmod(): bcmath function argument is not well-formed in /var/www/u1087147/data/www/u-reborn.site/SteamIDConverter.php on line 55
Warning: bcsub(): bcmath function argument is not well-formed in /var/www/u1087147/data/www/u-reborn.site/SteamIDConverter.php on line 58
Выводит вот это:
STEAM_0:0:-38280598980132864
Что нужно сделать?
Ответы (1 шт):
Этот код работает правильно, но конвертирует ид не верно, либо просто он устарел и способ изменился либо некогда работал.
private static function getIDFromCommunity($id)
{
$id = intval($id);
$idnum = 0;
$accnum = 0;
$constant = 76561197960265728;
if(($id % 2)==0)
{
$idnum = 0;
$temp = $id - $constant;
}
else
{
$idnum = 1;
$temp = $id - ($constant + 1);
}
$accnum = $temp / 2;
return "STEAM_0:".$idnum.":".number_format($accnum, 0, '', '');
}
Вот так у меня мой ид конвертирует верно
private static function getIDFromCommunity($id)
{
$id = intval($id);
$idnum = ($id % 2) == 0 ? 0 : 1;
$constant = 76561197960265728;
return "STEAM_0:".$idnum.":".number_format(($id - $constant), 0, '', '');
}