Список steam игроков.

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #21
komashchenko, в SM 1.6.2 только ввели GetClientAuthId
 

b0re

Участник
Сообщения
99
Реакции
5
Хороший плагин, но пока не работает должным образом: показывает вообще всех игроков. А так игроков выбрать можно, профиль открывается. И да, теперь появились девятизначные стимы , так что думаю, надо подкорректировать strlen(SteamID) != 20
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #24
AlmazON, напиши код, который по команде sm_test идет по всем игрокам и выводит в консоль их стимы в формате SteamID64 (uint64)
И пусть кто-то у себя проверит и сравнит что вышло
 

b0re

Участник
Сообщения
99
Реакции
5
Скажи, сколько цифр у стим и ноу-стим игрока и я "скажу, кто ты")
Я не в курсе разницы между ними для формата SteamID64 (uint64).
Если это был вопрос, то у стимов не более 9 включительно. У ноу-стимов - от 9 и более включительно.

это в формате steamID просто, как в SteamID64 - не знаю, но показывает всех. так ведь не было запланировано?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
в SteamID64 - не знаю, но показывает всех. так ведь не было запланировано?
Нет. Хоть одного стим можешь отличить от 100% не стим? Посмотри, сколько у кого чисел.
по команде sm_test идет по всем игрокам
Я боюсь, как бы у всех не одинаковое количество цифр было)
 

b0re

Участник
Сообщения
99
Реакции
5
Нет. Хоть одного стим можешь отличить от 100% не стим? Посмотри, сколько у кого чисел.Я боюсь, как бы у всех не одинаковое количество цифр было)

Ну так я так и делаю всегда только по steamid, а по steamid64 я посмотрел у стимов и ноу-стимов одинаковое кол-во чисел - 17. Вот поэтому и всех показывает в меню.
Ребят, сделайте лучше по steamid. Там если более 9 чисел - то точно ноу-стим. 9 - или стим недавно купленный или ноу-стим, а все что меньше уже - стим.
GetClientAuthString - вроде эта функция выдает steamid?
 

b0re

Участник
Сообщения
99
Реакции
5
SteamID теперь определяется корректно, но когда открываешь профиль, то он пустой. И еще раз повторюсь, лучше сделать проверку длины строки до 20, т.к. появились девятизнаки. Правда будут показываться и ноу-стимы, имеющие столько же цифр, но зато все стимы будут показаны точно.
 

b0re

Участник
Сообщения
99
Реакции
5
AlmazON, вот:
76561198127563660 - steam
76561199349074908 - no-steam
76561200526566704 - no-steam
76561198037389170 - steam
76561200303818090 - no-steam

Игроков пока, конечно, маловато на сервере для анализа. Попозже еще сделаю.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
В преобразовании:
Format(FriendID,size,"http://steamcommunity.com/profiles/765611979%d",iFriendID);
А реально:
Итог: преобразование изначально неверное. Не знаю, чем руководствовался автор этого кода.
Либо разглядеть алгоритм, либо делать всё же дважды получая Steam.
Попозже еще сделаю
Давай. Может так удастся понять и сделать именно по этому виду Steam более точное распознавание.
 

b0re

Участник
Сообщения
99
Реакции
5
преобразование изначально неверное. Не знаю, чем руководствовался автор этого кода
Потому что, когда оно писалось, то величина числа steamid64 была, судя по всему, меньше

по этому виду Steam более точное распознавание

Вот нашел правильное преобразование:

PHP:
STEAM_X:Y:Z

W=Z*2+76561197960265728+Y
По вычислениям все верно, но когда пытаюсь его выполнить, то выдается максимум 8 цифр:
PHP:
new iFriendID=(iAuthID*2)+76561197960265728+iServer;
Format(FriendID,size,"http://steamcommunity.com/profiles/%i",iFriendID);
Или я не правильный тип данных задаю?

Еще порция steamid64:
76561198171871470 - steam
76561199349074908 - nosteam
76561198126187793 - steam
76561198090822618 - steam
76561198126676328 - steam
76561199204774116 - nosteam
76561200480413508 - nosteam
76561198132318734 - хоть профиль и отображается, но как ни странно - nosteam
76561198191047609 - steam
 

semjef

semjef.ru
Сообщения
993
Реакции
444
#include <curl>? Я с таким не связываюсь, да и писать что-то в массив, тратя память, когда есть вероятность того, что этой командой вообще не воспользуется - не имеет большого смысла.
Несколько кбайт памяти... да ты разоришься блин!
Ну или через сокет, что тоже достаточно легко.Я написал 100% способ. Плагин сделать легко, но лень.
 

semjef

semjef.ru
Сообщения
993
Реакции
444
AlmazON, ну как бы есть рациональное, а есть не рациональное использование
Лучше всё в массив положить, чем каждый раз внешнюю ф-цию вызывать.
 

b0re

Участник
Сообщения
99
Реакции
5
Вариант этого ниже.

По-прежнему работает некорректно:
определились как стим:
76561198024855768 - steam
76561198003750425 - steam
76561198255399382 - nosteam
76561198148271680 - steam
76561198037627114 - steam

не определились:
76561197996217779 - steam
76561200480413508 - nosteam
76561197994252511 - steam

Надо хотя бы вот так сделать:
PHP:
if(SteamID[7] <='8')
Раньше же числа меньше были, древние стим акки таким образом не попадают в список
 

b0re

Участник
Сообщения
99
Реакции
5
Посмотрел еще. Еще с большей точность можно определить стим акки, если проверять первые 10 цифр стимид64 в диапазоне от 7656119796 до 7656119822.

В нынешнем виде плагина акки, начинающиеся с 765611986, будет определены как стим, хотя это ноустим. Ну и также ноустим бывают и 7656120ххх и более, там 8ой символ тоже может оказаться 8 или 7, и соответственно будут тоже определены как стим

Но тогда конечно будет еще больше кода. Сравнивать придется. В числа то такие строки вроде не преобразуешь никак, сорспаун работает до 2147483647?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
В числа то такие строки вроде не преобразуешь никак
Да хоть посимвольно можно преобразовать и сверять. Только я не понял ничего - ты натестил кодом, а я не в курсе. Оффтоп
Вот и вся проверка. Только какова уверенность в этом?
Да и вообще, 100% не сделать - всё равно со временем опять начнётся.
Сказали же, что с curl тогда надо писать.
Выше перезалил.
 

b0re

Участник
Сообщения
99
Реакции
5
Сейчас вообще пишет, что "Нет игроков", хотя я то есть.

PHP:
if(StringToInt(SteamID[7]) <8229999999)
Почему так? Это получается,что мы только 8ой символ берем и сравниваем с 8229999999, или я не прав?

всё равно со временем опять начнётся.
ну да
с curl тогда надо писать
Этот как работает? Происходит подключение к стиму и проверяется существует ли профиль игрока?
 
Сообщения
18
Реакции
2
Вот рабочая функция на получение адреса стим профиля:

PHP:
$steamlink = 'http://steamcommunity.com/profiles/'.calculateSteamid64($steam);
PHP:
function calculateSteamid64($steamID) {
if (preg_match('/^STEAM_[0-9]:[0-9]:[0-9]{1,}/i', $steamID))
    {
$steamID = str_replace("_", ":", $steamID);
list($part_one, $part_two, $part_three, $part_four) = explode(':', $steamID);
$result = bcadd('76561197960265728', $part_four * 2);
return bcadd($result, $part_three);
} else {
return false;
}
}
 
Сверху Снизу