Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 18
  1. #1
    Аватар для Zaur_Lumanov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.05.2015
    Адрес
    Москва
    Сообщений
    18
    Репутация:
    8 ±

    [RNM] RakNet Manager 1.0.0

    Новая тема с более свежей информацией о плагине:
    *клац*



     Содержимое темы (не актуально)
    Описание:

    Плагин для SA:MP-сервера, который позволяет работать с RakNet-пакетами в PAWN. Перехват входящих/исходящих, отправка кастомных Packet/RPC.

    Скачать:

    https://github.com/urShadow/raknetmanager/releases

    Оригинальная тема: http://forum.sa-mp.com/showthread.php?t=599936

    Примеры:

      Открыть/закрыть
    PHP код:
    #include <raknetmanager> 
    1. Отправка RPC

    PHP код:
    stock SendChatMessage(senderidmsg[])
    {
      new 
    BitStream:bs BS_New(), RPC_Chat 101;

      
    BS_WriteValue(bsRNM_INT16senderid
                        
    RNM_INT8strlen(msg), 
                        
    RNM_STRINGmsg);

      
    RNM_SendRPC(senderidRPC_Chatbs);

      
    BS_Delete(bs);

    2. Отправка пакета

    PHP код:
    stock FakeLostConnectionForPlayer(playerid)
    {
      new 
    BitStream:bs BS_New(), ID_CONNECTION_LOST 33;

      
    BS_WriteValue(bsRNM_INT8ID_CONNECTION_LOST);

      
    RNM_SendPacket(playeridbs);

      
    BS_Delete(bs);

    3. Перехват пакета со входящей синхронизации игрока пешком

    PHP код:
    new ID_PLAYER_SYNC 207;
    public 
    OnPlayerReceivedPacket(playeridpacketidBitStream:bs)
    {
        if(
    packetid == ID_PLAYER_SYNC)
        {
        new 
    lrkeysudkeyssampkeys,
        
    Float:pos[3], Float:quaternion[4],
        
    healtharmorweaponidspecialaction,
        
    Float:speed[3], Float:surfingoffsets[3],
        
    surfingvehidanimationidanimflags;

        
    BS_IgnoreBits(bs8); // packet id 1 byte
        
    BS_ReadValue(bsRNM_UINT16lrkeys,
                         
    RNM_UINT16udkeys,
                         
    RNM_UINT16sampkeys,
                         
    RNM_FLOATpos[0],
                         
    RNM_FLOATpos[1],
                         
    RNM_FLOATpos[2],
                         
    RNM_FLOATquaternion[0],
                         
    RNM_FLOATquaternion[1],
                         
    RNM_FLOATquaternion[2],
                         
    RNM_FLOATquaternion[3],
                         
    RNM_UINT8health,
                         
    RNM_UINT8armor,
                         
    RNM_UINT8weaponid,
                         
    RNM_UINT8specialaction,
                         
    RNM_FLOATspeed[0],
                         
    RNM_FLOATspeed[1],
                         
    RNM_FLOATspeed[2],
                         
    RNM_FLOATsurfingoffsets[0],
                         
    RNM_FLOATsurfingoffsets[1],
                         
    RNM_FLOATsurfingoffsets[2],
                         
    RNM_UINT16surfingvehid,
                         
    RNM_INT16animationid,
                         
    RNM_INT16animflags);

        
    printf("lrkeys %d udkeys %d sampkeys %d\n" \
               
    "pos %.2f %.2f %.2f\n" \
               
    "quaternion %.2f %.2f %.2f %.2f\n" \
               
    "health %d\n" \
               
    "armor %d\n" \
               
    "weaponid %d\n" \
               
    "specialaction %d\n" \
               
    "speed %.2f %.2f %.2f\n" \
               
    "surfingoffsets %.2f %.2f %.2f\n" \
               
    "surfingvehid %d\n" \
               
    "anim %d flags %d",
               
    lrkeysudkeyssampkeys,
               
    pos[0], pos[1], pos[2],
               
    quaternion[0], quaternion[1], quaternion[2], quaternion[3],
               
    healtharmorweaponidspecialaction,
               
    speed[0], speed[1], speed[2],
               
    surfingoffsets[0], surfingoffsets[1], surfingoffsets[2],
               
    surfingvehidanimationidanimflags
               
    );
        }
        return 
    1;

    4. Перехват входящего RPC с чат-сообщением

    PHP код:
    new RPC_Chat 101;
    public 
    OnPlayerReceivedRPC(playeridrpcidBitStream:bs)
    {
        if(
    rpcid == RPC_Chat
        {
        new 
    message[256], len;

        
    BS_ReadValue(bsRNM_UINT8len,
                        
    RNM_STRINGmessagelen);

        
    printf("chat message from player %d: %s"playeridmessage);
        }

        return 
    1;



    Native list:

    PHP код:
    native RNM_SendRPC(playeridrpcidBitStream:bs);  
    native RNM_SendPacket(playeridBitStream:bs);

    native BitStream:BS_New();
    native BS_Delete(&BitStream:bs);

    native BS_Reset(BitStream:bs);
    native BS_ResetReadPointer(BitStream:bs);
    native BS_ResetWritePointer(BitStream:bs);
    native BS_IgnoreBits(BitStream:bsbitcount);

    native BS_SetWriteOffset(BitStream:bsoffset);
    native BS_GetWriteOffset(BitStream:bs, &offset);
    native BS_SetReadOffset(BitStream:bsoffset);
    native BS_GetReadOffset(BitStream:bs, &offset);

    native BS_GetNumberOfBitsUsed(BitStream:bs, &number);
    native BS_GetNumberOfBytesUsed(BitStream:bs, &number);
    native BS_GetNumberOfUnreadBits(BitStream:bs, &number);

    native BS_WriteValue(BitStream:bs, {Float,_}:...);
    native BS_ReadValue(BitStream:bs, {Float,_}:...); 
    Callback list:

    PHP код:
    // return 0 => blocking action
    forward OnPlayerReceivedPacket(playeridpacketidBitStream:bs);
    forward OnPlayerReceivedRPC(playeridrpcidBitStream:bs);
    forward OnServerSendPacket(playeridpacketidBitStream:bs);
    forward OnServerSendRPC(playeridrpcidBitStream:bs); 
    Автор: urShadow.
    Последний раз редактировалось DeimoS; 05.09.2017 в 23:01.

  2. 2 пользователя(ей) сказали cпасибо:
    Profyan (08.02.2016) Reim (02.02.2016)
  3. #2
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    А где его можно применять?

  4. #3
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Как и говорил KyleSmith, Kalcor не одобряет плагинов на "memory hacking" > тема удалена

    I hardly doubt this will stay on the forum for long.

    I'm sure Kalcor will want it removed.

  5. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Кто подскажет, в каких случаях может быть полезен этот плагин?

  6. 2 пользователя(ей) сказали cпасибо:
    $continue$ (01.02.2016) [ForD] (01.02.2016)
  7. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Кто подскажет, в каких случаях может быть полезен этот плагин?
    При написании античитов, например, когда нужно узнать что-то, чего не предоставляют коллбэки SA:MP. Либо если нужно сделать что-то ещё, чего нельзя сделать другими стандартными способами - недавняя дискуссия на тему синхронизации машины после взрыва бензобака тому пример (впрочем, решением назвать использование такого плагина нельзя, скорее грязным хаком, да ещё и несовместимым с будущими версиями SA:MP).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #6
    Аватар для Zaur_Lumanov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.05.2015
    Адрес
    Москва
    Сообщений
    18
    Репутация:
    8 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    При написании античитов, например, когда нужно узнать что-то, чего не предоставляют коллбэки SA:MP. Либо если нужно сделать что-то ещё, чего нельзя сделать другими стандартными способами - недавняя дискуссия на тему синхронизации машины после взрыва бензобака тому пример (впрочем, решением назвать использование такого плагина нельзя, скорее грязным хаком, да ещё и несовместимым с будущими версиями SA:MP).
    В следующем обновлении будет автопоиск адресов, так что будет подходить под все версии.
    Последний раз редактировалось Zaur_Lumanov; 01.02.2016 в 20:32.

  9. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Zaur_Lumanov Посмотреть сообщение
    С каждой новой версии сампа плагин будет обновляться.
    Все так говорят, но где гарантия, что автор плагина не уйдёт в неактив при выпуске этой "новой версии"?
    Реалии таковы, что на плагин можно положиться либо при хакинге с автопоиском нужных адресов, либо при полном отсутствии хакинга. Иначе им будут пользоваться лишь 3,5 анонимуса и, скорее всего, только на платной основе - если разработчик плагина пропадёт, вряд ли кто-то другой просто так согласится обновлять его для работы с новой версией сервера.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. #8
    Аватар для Zaur_Lumanov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.05.2015
    Адрес
    Москва
    Сообщений
    18
    Репутация:
    8 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Все так говорят, но где гарантия, что автор плагина не уйдёт в неактив при выпуске этой "новой версии"?
    Реалии таковы, что на плагин можно положиться либо при хакинге с автопоиском нужных адресов, либо при полном отсутствии хакинга. Иначе им будут пользоваться лишь 3,5 анонимуса и, скорее всего, только на платной основе - если разработчик плагина пропадёт, вряд ли кто-то другой просто так согласится обновлять его для работы с новой версией сервера.
    Остается надеяться, и ждать.

  11. #9
    Аватар для Reim
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.06.2015
    Сообщений
    7
    Репутация:
    1 ±
    Ну исходники то есть, любой сможет доделать. Кстати где можно узнать все packetid и rpcid и тд, тип такого?

    PHP код:
    new ID_PLAYER_SYNC 207;
    new 
    RPC_Chat 101

  12. #10
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Reim Посмотреть сообщение
    Ну исходники то есть, любой сможет доделать.
    В теории - да, на практике же всем управляют деньги. А если кто-то и обновит плагин за просто так, то вряд ли сразу. Взять тот же FCNPC - автор плагина куда-то пропал, и его обновили для работы с 0.3.7 R2 только через полгода после обновления сервера. Потому-то работа с такими плагинами и считается плохой практикой.

    Цитата Сообщение от Reim Посмотреть сообщение
    Кстати где можно узнать все packetid и rpcid и тд, тип такого?
    Use reverse-engineering, Luke.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  13. Пользователь сказал cпасибо:
    Reim (02.02.2016)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •