AMX MOD X
Суббота, 05.07.2025, 19:56:09



Приветствую Вас Гость | RSS
[ Главная ] [ server protocol для Half Life. Помогите разобраться - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
server protocol для Half Life. Помогите разобраться
heorДата: Суббота, 23.08.2008, 17:17:57 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 0
Статус: Не в сети
Где можно найти информацию о 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 о ней ничего не сказано. Почему?

 
DaTaДата: Воскресенье, 24.08.2008, 14:53:35 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
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

*****************/
?>
 
heorДата: Понедельник, 25.08.2008, 12:03:49 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 33
Репутация: 0
Статус: Не в сети
Может кто знает форумы, где можно спросить об этом. Ну может какие-нибудь зарубежные, по CS.
Ну типа http://forums.alliedmods.net/.

Добавлено (2008-08-25, 12:03 Pm)
---------------------------------------------
Вот посоветовали http://developer.valvesoftware.com/wiki/Server_Queries
Здесь много информации о протоколе. Надеюсь что будет работать :)

 
PomanoBДата: Понедельник, 25.08.2008, 17:56:42 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
http://developer.valvesoftware.com/wiki/Server_Queries
Очень хорошо и понятно написано
Вот мой класс для работы с сервером - делал именно по этой статьё
Насчёт ограничения
Code

  if(substr($data, 0, 4) == "\xfe\xff\xff\xff")
      {

       $data2 = fread ($this->socket, 1);
       $status = socket_get_status($this->socket);
       $data2 .= fread($this->socket, $status["unread_bytes"]);

       if(strlen($data) > strlen($data2))
         $data = substr($data, 14) . substr($data2, 9);
       else
         $data = substr($data2, 14) . substr($data, 9);

      }
      else
      {
       $data = substr($data, 4);
      }

Посмотрел в классе rcon из amxbans
Видимо если не укладывается в ограничение сервер посылает первым байтом \xFE а не \XFF
и далее остальную часть
Прикрепления: hlds.rar (1.7 Kb)


http://romanov4400.mybrute.com
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2025