steam api, convert steamID64

260
31 января 2019, 01:50

меня очень сильно интересует вопрос, как конвертировать steamID64 в SteamID3 Я понимаю, что у меня нету кода, могу предоставить только код на получение этих данных но он думаю, не сильно нужен в данном вопросе.

По примеру, мне нужно что-то похожее на вот такой конвертор:

Я буду бесконечно благодарен тому, кто сможет обьяснить как это работает, И покажет пример.

Answer 1

<?php 
 
/** 
 * Class SteamID 
 * Simple PHP SteamID converter class that converts between SteamID's and Steam CommunityID's 
 * 
 * @author Callum Thomson <callum@callumthomson.co.uk> 
 * @version 3.0.0 
 */ 
class SteamIDConverter { 
    /** 
	 * Make a decision based on the input which conversion function should be run and then call it with the data. 
	 * 
     * @param $id SteamID or CommunityID 
	 * @return string Converted ID 
     */ 
    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); 
		} 
	} 
    /** 
	 * Convert SteamID into a CommunityID 
	 * 
     * @param $id SteamID 
     * @return string CommunityID 
     */ 
    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; 
	} 
    /** 
	 * Convert CommunityID to SteamID 
	 * 
     * @param $id CommunityID 
     * @return string SteamID 
     */ 
    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('76561198091655275'); 

Нашел такую штуку на гитхабе, потестил на парочке ID вроде верный результат, потестируйте

READ ALSO
Выбрать элементы по массиву со списком ключей

Выбрать элементы по массиву со списком ключей

Есть ли какая-нибудь функция в php, позволяющая выбрать из одного массива элементы, ключи которых соответствуют элементам другого массива?...

265
Не работает редирект

Не работает редирект

Подскажите пожалуйста, не работает редирект если содержимое файла =

241
Свои(либо правленые) функции в плагинах и composer update

Свои(либо правленые) функции в плагинах и composer update

Вот я поставил на CakePHP плагин CakeDC/UsersПоправил некоторые функции, дописал свои, в частности редактирование профиля, потом сделал composer update (не подумав)...

223