Quote (heor)
Где можно найти информацию о server protocol для Half Life? В sdk есть она, но она на английском. И не очень понятно написана.
Отправляю пакет на сервер #255#255#255#255'info'#0. А ответ так и не приходит, тоже самое с ping, players, rules. А rcon комманды работают, Challengeid, и прочее.
Вот так тоже работает: #255#255#255#255'TSource Engine Query'#0. Но в SDK о ней ничего не сказано. Почему?
В hlsdk эта информация устарела. Советую тебе посмотреть разные rcon утилиты на удобных тебе языках и узнать как они работают, зачем изобретать велосипед и смотреть как работает клиент? Еще есть подводный камень - ограничение размера пакета системой(вроде 1550 байт), тогда информация может прийти несколькими пакетами. Если ты желаешь передавать и принимать пакеты больше это-го размера - нужно провести дополнительное "расследование" структуры таких пакетов.
Ну больше я ничего не знаю по этому поводу, может кто-то сможет тебе помочь...
Вот я когда-то делал ркон скрипт для работы с пакетом не больше 1500(на PHP):
Code
<?php
$address = 'udp://10.10.10.1';//Твой IP
$port = 27015;//Твой порт
$rcon = 'lol';//Твой rcon
if( !($hSocket = @fsockopen($address, $port)) )
die("Socket error!");
socket_set_blocking($hSocket, 1);
socket_set_timeout($hSocket, 2);
//Получаем challenge, который нужен для отправки rcon сообщений
@fwrite($hSocket, "\xFF\xFF\xFF\xFFchallenge rcon\n");
$buff = @fread($hSocket, 1500);
//например $buff === '\xFF\xFF\xFF\xFFchallenge rcon 993760942\n\0'
$challenge = substr($buff, 19, -2);
//Get info
@fwrite($hSocket, "\xFF\xFF\xFF\xFFrcon $challenge \"$rcon\" status");
$buff = @fread($hSocket, 1500);
$buff = substr($buff, 5, -2);
fclose($hSocket);
/***************** например $buff ===
hostname: Half-Life
version : 47/1.1.2.0 3382 insecure (secure mode enabled, disconnected from Steam3)
tcp/ip : 10.10.10.1:27015
map : omg_alien_grund at: 0 x, 0 y, 0 z
players : 0 active (20 max)
# name userid uniqueid frag time ping loss adr
0 users
*****************/
?>