Информация RakNet | SA:MP | Информация о пакетах и вызовах

IZDATXXX

Известный
Автор темы
Проверенный
172
251
Пакет - данные для обмена между сервером и клиентом с помощью RakNet.
RPC (Remote Procedure Call) — оболочка пакета PACKET_RPC, предназначенная для удалённого выполнения определенных событий. Все RPC перечислены в RPCEnumeration и ScriptRPCEnumeration.
API SAMPFUNCS предоставляет обработчики для всех четырёх видов данных:
  1. RAKHOOK_TYPE_OUTCOMING_RPC — RPC, отправленный серверу;
  2. RAKHOOK_TYPE_OUTCOMING_PACKET — пакет, отправленный серверу;
  3. RAKHOOK_TYPE_INCOMING_RPC — RPC, пришедший от сервера;
  4. RAKHOOK_TYPE_INCOMING_PACKET — пакет, пришедший от сервера.
, а также реализует очереди для каждого обработчика.
Исходит от сервера, содержит пинг.
Исходит от клиента, содержит пинг.
C++:
struct stAuthKey
{
uint8_t packetId;
uint8_t keyLength;
char[] key;
};
Содержит данные о текущей сессии.
Исходит от сервера, когда отсутствуют свободные слоты на сервере.
Исходит от сервера, когда соединение с сервером было закрыто.
Исходит от сервера, когда соединение с сервером было утеряно.
Исходит от сервера, когда запрос клиента на соединение с сервером был принят.
Исходит от сервера, когда соединение с сервером было заблокировано.
Исходит от сервера, когда пароль неправильный.
Исходит от сервера и клиента, отправляется при управлении транспортом.
C++:
struct stInCarData
{
    uint16_t    sVehicleID;
    uint16_t    sLeftRightKeys;
    uint16_t    sUpDownKeys;
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float        fQuaternion[4];
    float        fPosition[3];
    float        fMoveSpeed[3];
    float        fVehicleHealth;
    uint8_t        bytePlayerHealth;
    uint8_t        byteArmor;
    uint8_t        byteCurrentWeapon;
    uint8_t        byteSiren;
    uint8_t        byteLandingGearState;
    uint16_t    sTrailerID;
    union
    {
        uint16_t    HydraThrustAngle[2];    //nearly same value
        float        fTrainSpeed;
    };
};
C++:
struct stRconCommand
{
uint8_t packetId;
uint32_t textLength;
char[] cmdText;
};
Исходит от сервера и клиента, отправляется при прицеливании.
C++:
struct stAimData
{
    BYTE    byteCamMode;
    float    vecAimf1[3];
    float    vecAimPos[3];
    float    fAimZ;
    BYTE    byteCamExtZoom : 6;        // 0-63 normalized
    BYTE    byteWeaponState : 2;    // see eWeaponState
    BYTE    bUnk;
};
Исходит от сервера и клиента, содержит данные об оружии в слотах.
C++:
struct stWeaponsUpdate
{
    uint16_t        iTargetID;
    uint8_t         slot;
    uint8_t         weapon;
    int16_t         ammo;
};
Исходит от сервера и клиента, отправляется при обновлении статистики.
C++:
struct stStatsData
{
    int iMoney;
    int iAmmo;    // ?
};
Исходит от сервера и клиента, отправляется при выстреле.
C++:
struct stBulletData
{
    uint8_t        byteType;
    uint16_t    sTargetID;
    float        fOrigin[3];
    float        fTarget[3];
    float        fCenter[3];
    uint8_t        byteWeaponID;
};
Исходит от сервера и клиента, содержит данные об игроке.
C++:
struct stOnFootData
{
    uint16_t    sLeftRightKeys;
    uint16_t    sUpDownKeys;
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float        fPosition[3];
    float        fQuaternion[4];
    uint8_t        byteHealth;
    uint8_t        byteArmor;
    uint8_t        byteCurrentWeapon;
    uint8_t        byteSpecialAction;
    float        fMoveSpeed[3];
    float        fSurfingOffsets[3];
    uint16_t    sSurfingVehicleID;
    short        sCurrentAnimationID;
    short        sAnimFlags;
};
Исходит от сервера и клиента, содержит данные о маркере.
C++:
struct stMarkersSync
{
int i;
int iNumberOfPlayers;
DWORD playerID;
short sPos[3];
bool bIsPlayerActive;
};
Исходит от сервера и клиента, содержит данные о свободном транспорте.
C++:
struct stUnoccupiedData
{
    int16_t sVehicleID;
    uint8_t byteSeatID;
    float    fRoll[3];
    float    fDirection[3];
    float    fPosition[3];
    float    fMoveSpeed[3];
    float    fTurnSpeed[3];
    float    fHealth;
};
Исходит от сервера и клиента, содержит данные о трейлере.
C++:
struct stTrailerData
{
    uint16_t    sTrailerID;
    float        fPosition[3];
    float        fQuaternion[4];
    float        fSpeed[3];
    float        fSpin[3];
};
Исходит от сервера и клиента, содержит данные о пассажире.
C++:
struct stPassengerData
{
    uint16_t    sVehicleID;
    uint8_t        byteSeatID;
    uint8_t        byteCurrentWeapon;
    uint8_t        byteHealth;
    uint8_t        byteArmor;
    uint16_t    sLeftRightKeys;
    uint16_t    sUpDownKeys;
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float    fPosition[3];
};
Исходит от сервера и клиента, содержит данные о наблюдении.
C++:
struct stSpectatorData
{
    uint16_t    sLeftRightKeys;
    uint16_t    sUpDownKeys;
    union
    {
        uint16_t            sKeys;
        struct stSAMPKeys    stSampKeys;
    };
    float    fPosition[3];
};
Отправляется при нажатии на игрока в списке игроков.
Отправляется при подключении к серверу.
Отправляется при входе в транспорт.
Отправляется при нажатии на объект.
Отправляет команду на сервер.
Отправляется при появлении.
Отправляется при смерти.
Отправляется если игрок NPC.
Отправляется при закрытии диалога.
Отправляется при нажатии на TextDraw.
Отправляется при действии над транспортом.
Отправляет сообщение на сервер.
Отправляется при получении урона транспортом.
Отправляется при нанесении, или получении урона от других игроков.
Отправляется при редактировании прицепленного объекта.
Отправляется при редактировании объекта.
Отправляется при смене интерьера.
Отправляется при установке метки на карту.
Отправляется при при выборе класса.
Отправляется при нажатии на кнопку появления.
Отправляется при взятии пикапа.
Отправляется при выборе пункта меню.
Отправляется при разрушении транспорта.
Отправляется при выходе из меню.
Отправляется при выходе из транспорта.
Отправляется при открытии списка игроков.
Устанавливает игроку имя.
Устанавливает игроку позицию.
Устанавливает игроку позицию, исходя из высоты местности.
Устанавливает игроку здоровье.
Устанавливает игроку тумблер заморозки.
Проигрывает звук в координатах.
Ограничивает координаты перемещения игрока.
Выдает деньги игроку.
Устанавливает игроку угол поворота.
Устанавливает игроку деньги.
Сбрасывает оружие игрока.
Выдает игроку оружие.
Устанавливает транспорту расширенные параметры.
Устанавливает игроку время суток.
Устанавливает игроку тумблер заморозки времени суток.
Отправляется, когда другой игрок входит в зону прорисовки.
Устанавливает игроку уровень владения оружием.
Устанавливает игроку уровень опьянения.
Создаёт 3D текстовую метку.
Отключает чекпоинт.
Устанавливает гоночный чекпоинт.
Отключает гоночный чекпоинт.
Запускает аудио-поток в координатах.
Останавливает аудио-поток.
Удаляет здание для игрока.
Создает объект.
Устанавливает объекту позицию.
Устанавливает объекту поворот.
Разрушает объект.
Отправляет сообщение о смерти.
Устанавливает игроку метку на карте.
Удаляет компонент транспорта.
Обновляет 3D текстовую метку.
Показывает диалог.
Разрушает пикап.
Посылает транспорт в интерьер.
Устанавливает игроку броню.
Устанавливает игроку оружие в руке.
Устанавливает информацию о появлении.
Устанавливает игроку команду.
Помещает игрока в транспорт.
Извлекает игрока из транспорта.
Устанавливает игроку цвет.
Отображает текст игры.
Показывает NameTag другого игрока для игрока.
Прикрепляет камеру к объекту.
Интерполировать камеру.
Устанавливает материал объекта.
Очищает цвет области карты.
Применяет анимацию.
Сбивает анимацию.
Устанавливает игроку специальное действие.
Устанавливает игроку стиль боя.
Устанавливает игроку скорость.
Устанавливает транспорту скорость.
Выводит сообщение.
Создает пикап.
Двигает объект.
Включает бонус за дрифт.
Устанавливает надпись TextDraw'a.
Устанавливает чекпоинт.
Создаёт область карты.
Отправляет варнинги.
Устанавливает игроку прицепленный объект.
Разрушает область карты.
Закрашивает область карты.
Останавливает объект.
Устанавливает игроку тумблер наблюдения.
Устанавливает игроку наблюдаемого игрока.
Устанавливает игроку наблюдаемый транспорт.
Устанавливает игроку уровень розыска.
Показывает TextDraw.
Скрывает TextDraw для игрока.
Отправляется при входе на сервер.
Отправляется при выходе с сервера.
Удаляет игроку иконку на карте.
Устанавливает игроку патроны.
Устанавливает гравитацию.
Устанавливает транспорту здоровье.
Прикрепляет трейлер к транспорту.
Открепляет трейлер от транспорта.
Устанавливает погоду.
Устанавливает игроку скин.
Устанавливает игроку интерьер.
Устанавливает игроку позицию камеры.
Устанавливает игроку фокус камеры.
Устанавливает транспорту позицию.
Устанавливает транспорту поворот.
Устанавливает параметры транспорта для игрока.
Устанавливает камеру над игроком.
Отправляется при выходе другого игрока из зоны прорисовки.
Отправляется при входе транспорта в зону прорисовки.
Отправляется при выходе транспорта из зоны прорисовки.
Тема будет развиваться до конца информативного потока. Ещё многое предстоит внести.
 
Последнее редактирование:

|| NN - NoName ||

Известный
1,049
627
Будет полезно сделать вот про это.
Lua:
onPlayerSync
onVehicleSync
Примеры как с ними работать, как использовать их в коде.

 

IZDATXXX

Известный
Автор темы
Проверенный
172
251
Будет полезно сделать вот про это.
Lua:
onPlayerSync
onVehicleSync
Примеры как с ними работать, как использовать их в коде.
Здесь не будет примеров использования в коде. Эта тема не привязана к какому-либо языку программирования. Здесь будет только описание пакетов, rpc's и особенностей RakNet.
 

rraggerr

проверенный какой-то
1,626
845
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здесь не будет примеров использования в коде. Эта тема не привязана к какому-либо языку программирования. Здесь будет только описание пакетов, rpc's и особенностей RakNet.
было бы полезнее если бы ты расписал каждый аргумент и его тип
 

Azller Lollison

я узбек
Друг
1,342
2,263
Спойлер: PACKET_UNOCCUPIED_SYNC = 209 Исходит от сервера и клиента, содержит свободные данные.
Что?
Это синхра машины без водителя.

Спойлер: PACKET_WEAPONS_UPDATE = 204 Исходит от сервера и клиента, отправляется при обновлении ору.
Это отправка фулл инфы об твоем оружии в слотах

Спойлер: PACKET_VEHICLE_SYNC = 200 Исходит от сервера и клиента, содержит данные о транспорте.
Данные о транспорте содержат трейлер, унокуп, пассенжер синхры, помимо инкара. Как мне кажется, корректнее было бы написать что это эта синхра отправляется когда игрок за рулем в машине.

Спойлер: RPC_DIALOGRESPONSE = 62 Отправляется при действии над диалогом.
При закрытии диалога* (esc, enter)

Спойлер: RPC_MENUSELECT = 132 Отправляется для навигации в диалоговом меню.
???
 
  • Нравится
Реакции: IZDATXXX

f0Re3t

Poh production
Друг
876
807
шото ты запоздал с темой на несколько лет, этой информации як жопой жуй по сети
 

IZDATXXX

Известный
Автор темы
Проверенный
172
251
Не то же самое, у меня в теме описаны события при которых отправляются пакеты и rpc's, а не их структура и параметры. Хорош чепуху писать.
шото ты запоздал с темой на несколько лет, этой информации як жопой жуй по сети
хоть одну тему с полной информацией о событиях (при отправке rpc's и пакетов) найди и перекинь сюда, если перекинешь тему удалю. Твой шанс.
 

f0Re3t

Poh production
Друг
876
807
с полной информацией о событиях (при отправке rpc's и пакетов)
к чему это? если все рпц и пакеты названы так, что и так понятно что они и когда отправляют, а обычная информация о том, что такое пакеты и РПЦ, а так же их приоритеты, коих у тебя нет в теме есть на форуме сампа:
https://forum.sa-mp.com/showthread.php?t=644883
https://forum.sa-mp.com/showthread.php?t=644857

Здесь не будет примеров использования в коде. Эта тема не привязана к какому-либо языку программирования. Здесь будет только описание пакетов, rpc's и особенностей RakNet.
тогда у меня только один вопрос:
API SAMPFUNCS предоставляет обработчики для всех четырёх видов данных:
какого хера ты привязываешься к сф апи если ты сам сказал что речь идет о чистом ракнете?
 
  • Нравится
Реакции: imring

IZDATXXX

Известный
Автор темы
Проверенный
172
251
к чему это? если все рпц и пакеты названы так, что и так понятно что они и когда отправляют, а обычная информация о том, что такое пакеты и РПЦ, а так же их приоритеты, коих у тебя нет в теме есть на форуме сампа:
https://forum.sa-mp.com/showthread.php?t=644883
https://forum.sa-mp.com/showthread.php?t=644857


тогда у меня только один вопрос:

какого хера ты привязываешься к сф апи если ты сам сказал что речь идет о чистом ракнете?
Потому-что вся разработка скриптов с хуками идёт на SF API, будь то Moon, Cleo (AHK ещё может, не вдавался). А те, кто юзает не SF API, а руками хэндлеры заводит, скорее прекрасно всё знают, и тема им ни к чему.
 

F11GAR0.

Потрачен
0
57
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
нахуй ты это высрал братишка, тут никакой полезной информации даже нету
 

xISRAPILx

Перепишу свою жизнь на PHP
Проверенный
248
173
полной информацией
Информация тут не полная, нету подробного описания, только поверхностно прошелся даже там, где и по названию всю понятно.

нахуй ты это высрал братишка, тут никакой полезной информации даже нету
Для тебя может и нету, мог просто мимо пройти, если нечего сказать. Никакой конструктивности и своего мнения, идешь за стадом(всеми(не оскорбление)).

. Эта тема не привязана к какому-либо языку программирования. Здесь будет только описание пакетов, rpc's и особенностей RakNet.
Не вижу тут особенностей ракнета, не рассказано о том же шифровании пакетов от сервера к клиенту, о структуре батчей и всех таких нюансах(которые, собстна, почти никому тут и не нужны).

Тебе зачет за старания и желание развиваться, если это просто не копипаст, конечно. :drink:
 

F11GAR0.

Потрачен
0
57
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

xISRAPILx

Перепишу свою жизнь на PHP
Проверенный
248
173
шото ты запоздал с темой на несколько лет, этой информации як жопой жуй по сети
Годных статей с описанием всего нет нигде. Все пережевывают максимально тему с синхрой и всё. Я именно про сам ракнет в сампе(Да, есть отличия от оригинального ракнета), о Data-части, не о его использовании в Moon, Cleo, SF.
Интересно каждый проверенный пишет ни о чём и всем лижет очко?)
Интересно, каждый должен обсирать темы начинающих? Клал я на этого проверенного, хоть сейчас снимайте, я никогда его не просил и не знаю, за что и как его выдают. Более того, я не активен в этом "сообществе"(Особенно в последние месяцы) и каких-то умопомрачительных работ сюда не выкладывал.
Хорошо, давай пройдемся по твоей теме, где ты в сотый раз прошелся по синхрам, почему ты её решил выложить, если всё это уже есть в сети?

Хорошо, давай пройдемся по твоей теме, где ты в сотый раз прошелся по синхрам
Более того, ты говорил о работе с ракнетом в СФ, а не о самом ракнете.