Advertisement
xXx2o1o

Untitled

May 17th, 2016
864
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.68 KB | None | 0 0
  1. {$CLEO}
  2.  
  3. /*
  4.  
  5. RakNet - является сетевым движком SA:MP'а.
  6. Все данные, которые посылаются нам / отсылаем мы сами, хранятся в BitStream - структура, которая хранит данные побайтово.
  7. В SA:MP'e имеется 2 вида данных для обмена информацией между клиентом и сервером - Packet и RPC.
  8.  
  9. */
  10.  
  11. 0BE3: raknet setup_incoming_rpc_hook @iRPC { Перехват всех входящих RPC }
  12. 0BE1: raknet setup_outcoming_rpc_hook @oRPC { Перехват всех исходящих RPC }
  13. 0BE4: raknet setup_incoming_packet_hook @iPacket { Перехват всех входящих пакетов }
  14. 0BE2: raknet setup_outcoming_packet_hook @oPacket { Перехват всех исходящих пакетов }
  15. 0BDE: pause_thread 0
  16.  
  17. :iRPC
  18. 0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
  19. 0BF8: raknet 0@ = get_rpc_name 0@
  20. 0B78: log "iRPC: %s" {iRPC}0@
  21. 0BE0: raknet hook_ret TRUE
  22.  
  23. :oRPC
  24. 0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
  25. 0BF8: raknet 0@ = get_rpc_name 0@
  26. 0B78: log "oRPC: %s" {oRPC}0@
  27. 0BE0: raknet hook_ret TRUE
  28.  
  29. :iPacket
  30. 0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
  31. 0BF9: raknet 0@ = get_packet_name 0@
  32. 0B78: log "iPacket: %s" {iPacket}0@
  33. 0BE0: raknet hook_ret TRUE
  34.  
  35. :oPacket
  36. 0BE5: raknet 0@ = get_hook_param {PARAM_PACKETID}1
  37. 0BF9: raknet 0@ = get_packet_name 0@
  38. 0B78: log "oPacket: %s" {oPacket}0@
  39. 0BE0: raknet hook_ret TRUE
  40.  
  41. /*
  42.  
  43. TRUE (1) - Packet/RPC принимается/отправляется серверу.
  44. FALSE (0) - Packet/RPC НЕ принимается/НЕ отправляется серверу.
  45.  
  46. */
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67. { Часть 2 }
  68.  
  69.  
  70.  
  71.  
  72.  
  73. // Разница между RPC и Packet'ами.
  74.  
  75.  
  76. {
  77.  
  78. RPC - это в основном мелкие процедуры которые сервер присылает Вам или Вы отсылаете серверу.
  79. Packet - это большие процедуры которые так же могут быть получены с сервера и могут быть посланы Вами.
  80.  
  81.  
  82. Примеры:
  83. RPC - Смена погоды, смена времени, телепортация и т.д.
  84. Packet - Текущая позиция игрока, скорость движения, количество ХП, АП и т.д.
  85.  
  86. Если углубиться, то большая разница между RPC и Packet'ами в том, что в структуре каждого Packet'a первый байт всегда отвечает за ID Packet'a, а все последующие данные отвечают уже за структуру Packet'a .
  87. В RPC же всё проще. В них никогда первый байт не отвечает за ID RPC, за исключением того, что это предусмотрено самим RPC .
  88.  
  89. Все названия RPC и Packet'ов могут быть найдены в файле SF, который находится в папке SB/data/sa (Если Вы до этого устанавливали опкоды SF) .
  90.  
  91. }
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98. // Новые опкоды для Часть 2.
  99.  
  100. /*
  101.  
  102. Opcode: 0BE5: raknet 0@ = get_hook_param 0@
  103. Описание: Возвращает указанный параметр Hook'a .
  104.  
  105. Список параметров:
  106. PARAM_BITSTREAM = 0 // Получает BitStream из Hook'a .
  107. PARAM_PACKETID = 1  // Получает ID RPC/Packet'a из Hook'a .
  108. PARAM_PRIORITY = 2 // ...
  109. PARAM_RELIABILITY = 3 // ...
  110. PARAM_ORDERINGCHANNEL = 4 // ...
  111. PARAM_SHIFTTIMESTAMP = 5 // ...
  112.  
  113. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement