STEAM-ID конвертер

Сообщения
3
Реакции
4
Класс конвертирует STEAM ID
PHP:
class SteamID
{
    public static function st32to3($steamid32)
    {
        if (preg_match('/^STEAM_0\:1\:(.*)$/', $steamid32, $res)) {
 
            $st = '[U:1:';
            $st .= $res[1] * 2 + 1;
            $st .= ']';
            return $st;
        }
        return false;
    }
 
    public static function st3to32($steamid3)
    {
        if (preg_match("/\[U:1:(\d+)\]/", $steam3)) {
            $steam3 = preg_replace("/\[U:1:(\d+)\]/", "$1", $steamid3);
            $A = $steam3 % 2;
            $B = intval($steam3 / 2);
            return "STEAM_0:" . $A . ":" . $B;
        }
        return false;
    }
 
    public static function st32to64($steamid32)
    {
        if (preg_match('/^STEAM_0\:1\:(.*)$/', $steamid32, $res)) {
            list(, $m1, $m2) = explode(':', $steamid32, 3);
            list($steam_cid,) = explode('.', bcadd((((int)$m2 * 2) + $m1), '76561197960265728'), 2);
            return $steam_cid;
        }
        return false;
    }
 
    public static function st64to32($steamid64)
    {
        $pattern = "/^(7656119)([0-9]{10})$/";
        if (preg_match($pattern, $steamid64, $match)) {
            $const1 = 7960265728;
            $const2 = "STEAM_0:";
            $steam32 = '';
            if ($const1 <= $match[2]) {
                $a = ($match[2] - $const1) % 2;
                $b = ($match[2] - $const1 - $a) / 2;
                $steam32 = $const2 . $a . ':' . $b;
            }
            return $steam32;
        }
        return false;
    }
}


Пример:
PHP:
<?php
$steamid32 = SteamID::st64to32(76561198086827637); // Вернёт STEAM_0:1:63280954
 
Последнее редактирование:

Felton

Участник
Сообщения
799
Реакции
59
А это для чего ?Описания нет.Что это за код ???
Для чего это надо ?
 

iSe7en

Участник
Сообщения
209
Реакции
111
PHP:
class SteamID
{
    public static function st32to3($steamid32)
    {
        if (preg_match('/^STEAM_1\:*\:(.*)$/', $steamid32, $res)) {

            $st = '[U:1:';
            $st .= $res[1] * 2 + 1;
            $st .= ']';
            return $st;
        }
        return false;
    }

    public static function st3to32($steamid3)
    {
        if (preg_match("/\[U:1:(\d+)\]/", $steamid3)) {
            $steam3 = preg_replace("/\[U:1:(\d+)\]/", "$1", $steamid3);
            $A = $steam3 % 2;
            $B = intval($steam3 / 2);
            return "STEAM_1:" . $A . ":" . $B;
        }
        return false;
    }

    public static function st32to64($steamid32)
    {
        if (preg_match('/^STEAM_1\:*\:(.*)$/', $steamid32, $res)) {
            list(, $m1, $m2) = explode(':', $steamid32, 3);
            list($steam_cid,) = explode('.', bcadd((((int)$m2 * 2) + $m1), '76561197960265728'), 2);
            return $steam_cid;
        }
        return false;
    }

    public static function st64to32($steamid64)
    {
        $pattern = "/^(7656119)([0-9]{10})$/";
        if (preg_match($pattern, $steamid64, $match)) {
            $const1 = 7960265728;
            $const2 = "STEAM_1:";
            $steam32 = '';
            if ($const1 <= $match[2]) {
                $a = ($match[2] - $const1) % 2;
                $b = ($match[2] - $const1 - $a) / 2;
                $steam32 = $const2 . $a . ':' . $b;
            }
            return $steam32;
        }
        return false;
    }
}

Немного пофиксил для CS:GO
 
Последнее редактирование:
M

MihailM

на Javа-у бы перевести, цены бы не было для такого скриптика, без PHP !
 
Последнее редактирование модератором:

Bandit228

Участник
Сообщения
102
Реакции
31
Кому надо: Вот простой скрипт получения из маленького SteamID ссылки на профиль:
PHP:
  $numbers1 = str_replace("STEAM_1:1:","",$row['authid']);
  $numbers2 = ($numbers1 * 2);
  $numbers3 = ($numbers2 + 1 + 76561197960265728);
 
  • Мне нравится
Реакции: DOVE

Crocell

Мошенник
Сообщения
106
Реакции
42

romchik4021

Участник
Сообщения
42
Реакции
15
Класс конвертирует STEAM ID
PHP:
class SteamID
{
    public static function st32to3($steamid32)
    {
        if (preg_match('/^STEAM_0\:1\:(.*)$/', $steamid32, $res)) {

            $st = '[U:1:';
            $st .= $res[1] * 2 + 1;
            $st .= ']';
            return $st;
        }
        return false;
    }

    public static function st3to32($steamid3)
    {
        if (preg_match("/\[U:1:(\d+)\]/", $steam3)) {
            $steam3 = preg_replace("/\[U:1:(\d+)\]/", "$1", $steamid3);
            $A = $steam3 % 2;
            $B = intval($steam3 / 2);
            return "STEAM_0:" . $A . ":" . $B;
        }
        return false;
    }

    public static function st32to64($steamid32)
    {
        if (preg_match('/^STEAM_0\:1\:(.*)$/', $steamid32, $res)) {
            list(, $m1, $m2) = explode(':', $steamid32, 3);
            list($steam_cid,) = explode('.', bcadd((((int)$m2 * 2) + $m1), '76561197960265728'), 2);
            return $steam_cid;
        }
        return false;
    }

    public static function st64to32($steamid64)
    {
        $pattern = "/^(7656119)([0-9]{10})$/";
        if (preg_match($pattern, $steamid64, $match)) {
            $const1 = 7960265728;
            $const2 = "STEAM_0:";
            $steam32 = '';
            if ($const1 <= $match[2]) {
                $a = ($match[2] - $const1) % 2;
                $b = ($match[2] - $const1 - $a) / 2;
                $steam32 = $const2 . $a . ':' . $b;
            }
            return $steam32;
        }
        return false;
    }
}


Пример:
PHP:
<?php
$steamid32 = SteamID::st64to32(76561198086827637); // Вернёт STEAM_0:1:63280954
Не работает функция st3to32
PHP:
<?php
$steamid32 = SteamID::st3to32("[U:1:126561909]");
echo $steamid32; //Ничего не выводит и не показывает никаких ошибок...

Очень нужно сконвертировать [U:1:126561909] в нормальный STEAM_X:X:XXXXXXXX
 

iSe7en

Участник
Сообщения
209
Реакции
111
Не работает функция st3to32
PHP:
<?php
$steamid32 = SteamID::st3to32("[U:1:126561909]");
echo $steamid32; //Ничего не выводит и не показывает никаких ошибок...

Очень нужно сконвертировать [U:1:126561909] в нормальный STEAM_X:X:XXXXXXXX
там в функции ошибка, на исправленную
PHP:
public static function st3to32($steamid3)
{
    if (preg_match("/\[U:1:(\d+)\]/", $steamid3)) {
        $steam3 = preg_replace("/\[U:1:(\d+)\]/", "$1", $steamid3);
        $A = $steam3 % 2;
        $B = intval($steam3 / 2);
        return "STEAM_0:" . $A . ":" . $B;
    }
    return false;
}
 

romchik4021

Участник
Сообщения
42
Реакции
15
там в функции ошибка, на исправленную
PHP:
public static function st3to32($steamid3)
{
    if (preg_match("/\[U:1:(\d+)\]/", $steamid3)) {
        $steam3 = preg_replace("/\[U:1:(\d+)\]/", "$1", $steamid3);
        $A = $steam3 % 2;
        $B = intval($steam3 / 2);
        return "STEAM_0:" . $A . ":" . $B;
    }
    return false;
}
Большое спасибо, теперь работает!
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
Ребят, а как конвертировать steam3 to account_id? Например из STEAM_0:0:1422421348, должно получиться значение -1450124600, и наоборот.
 

sviridov_artem

Добрая душа
Сообщения
134
Реакции
30
Тут, в основном, все написано SteamID - Valve Developer Community
Все конвертации, из аккаунт ид в обычным стим, всеми скриптами, которые были попробованы некорректны, так как не верный стим получается, проблема только с отрицательным значением аккунт ид, который записывает плагин в базу, например -1450124600. С положительным, который в нормальном виде записывается, проблем нет,
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Все конвертации, из аккаунт ид в обычным стим, всеми скриптами, которые были попробованы некорректны, так как не верный стим получается, проблема только с отрицательным значением аккунт ид, который записывает плагин в базу, например -1450124600. С положительным, который в нормальном виде записывается, проблем нет,
Причем тут скрипты? Я вам ссылку на ресурс дал, чтобы Вы поняли, как он формируется.
По поводу отрицательных значений, приведите число к типу unsigned int
 
Последнее редактирование:
Сверху Снизу