Advertisement
ShomyScript

Untitled

Jul 2nd, 2019
794
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.56 KB | None | 0 0
  1. /*
  2. * The MIT License (MIT)
  3. *
  4. * Copyright (c) 2017 urShadow
  5. *
  6. * Permission is hereby granted, free of charge, to any person obtaining a copy
  7. * of this software and associated documentation files (the "Software"), to deal
  8. * in the Software without restriction, including without limitation the rights
  9. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. * copies of the Software, and to permit persons to whom the Software is
  11. * furnished to do so, subject to the following conditions:
  12. *
  13. * The above copyright notice and this permission notice shall be included in all
  14. * copies or substantial portions of the Software.
  15. *
  16. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22. * SOFTWARE.
  23. */
  24.  
  25. #if !defined PAWNRAKNET_INC_
  26. #define PAWNRAKNET_INC_
  27.  
  28. #define PAWNRAKNET_INCLUDE_VERSION 102
  29.  
  30. enum PR_HandlerType
  31. {
  32. PR_INCOMING_RPC,
  33. PR_INCOMING_PACKET,
  34. PR_OUTCOMING_RPC,
  35. PR_OUTCOMING_PACKET,
  36. PR_NUMBER_OF_HANDLER_TYPES
  37. };
  38.  
  39. enum PR_ValueType
  40. {
  41. PR_INT8,
  42. PR_INT16,
  43. PR_INT32,
  44. PR_UINT8,
  45. PR_UINT16,
  46. PR_UINT32,
  47. PR_FLOAT,
  48. PR_BOOL,
  49. PR_STRING,
  50.  
  51. // compressed
  52. PR_CINT8,
  53. PR_CINT16,
  54. PR_CINT32,
  55. PR_CUINT8,
  56. PR_CUINT16,
  57. PR_CUINT32,
  58. PR_CFLOAT,
  59. PR_CBOOL,
  60. PR_CSTRING,
  61.  
  62. PR_BITS
  63. };
  64.  
  65. enum PR_PacketPriority
  66. {
  67. PR_SYSTEM_PRIORITY,
  68. PR_HIGH_PRIORITY,
  69. PR_MEDIUM_PRIORITY,
  70. PR_LOW_PRIORITY
  71. };
  72.  
  73. enum PR_PacketReliability
  74. {
  75. PR_UNRELIABLE = 6,
  76. PR_UNRELIABLE_SEQUENCED,
  77. PR_RELIABLE,
  78. PR_RELIABLE_ORDERED,
  79. PR_RELIABLE_SEQUENCED
  80. };
  81.  
  82. #if !defined __cplusplus
  83. public _pawnraknet_version = PAWNRAKNET_INCLUDE_VERSION;
  84. #pragma unused _pawnraknet_version
  85.  
  86. public bool:_pawnraknet_is_gamemode = !defined FILTERSCRIPT;
  87. #pragma unused _pawnraknet_is_gamemode
  88.  
  89. #define IRPC:%0(%1) \
  90. forward pr_rir_%0(); \
  91. public pr_rir_%0() \
  92. PR_RegHandler(%0, "pr_ir_"#%0, PR_INCOMING_RPC); \
  93. forward pr_ir_%0(%1); \
  94. public pr_ir_%0(%1)
  95.  
  96. #define IPacket:%0(%1) \
  97. forward pr_rip_%0(); \
  98. public pr_rip_%0() \
  99. PR_RegHandler(%0, "pr_ip_"#%0, PR_INCOMING_PACKET); \
  100. forward pr_ip_%0(%1); \
  101. public pr_ip_%0(%1)
  102.  
  103. #define ORPC:%0(%1) \
  104. forward pr_ror_%0(); \
  105. public pr_ror_%0() \
  106. PR_RegHandler(%0, "pr_or_"#%0, PR_OUTCOMING_RPC); \
  107. forward pr_or_%0(%1); \
  108. public pr_or_%0(%1)
  109.  
  110. #define OPacket:%0(%1) \
  111. forward pr_rop_%0(); \
  112. public pr_rop_%0() \
  113. PR_RegHandler(%0, "pr_op_"#%0, PR_OUTCOMING_PACKET); \
  114. forward pr_op_%0(%1); \
  115. public pr_op_%0(%1)
  116.  
  117. #define IncomingRPC IRPC
  118. #define OutcomingRPC ORPC
  119. #define IncomingPacket IPacket
  120. #define OutcomingPacket OPacket
  121.  
  122. enum RAKNET_ONFOOT_SYNC
  123. {
  124. PR_lrKey,
  125. PR_udKey,
  126. PR_keys,
  127.  
  128. Float: RAKNET_POS_X,
  129. Float: RAKNET_POS_Y,
  130. Float: RAKNET_POS_Z,
  131.  
  132. Float: RAKNET_QUATERION_X,
  133. Float: RAKNET_QUATERION_Y,
  134. Float: RAKNET_QUATERION_Z,
  135. Float: RAKNET_QUATERION_R,
  136.  
  137. RAKNET_HEALTH,
  138. PR_armour,
  139. RAKNET_WEAPON,
  140. PR_additionalKey,
  141. RAKNET_ACTION,
  142.  
  143. Float: RAKNET_SPEED_X,
  144. Float: RAKNET_SPEED_Y,
  145. Float: RAKNET_SPEED_Z,
  146.  
  147. Float: RAKNET_SURFING_X,
  148. Float: RAKNET_SURFING_Y,
  149. Float: RAKNET_SURFING_Z,
  150.  
  151. RAKNET_SURFING_CAR_ID,
  152. RAKNET_ANIM,
  153. PR_animationFlags
  154. };
  155.  
  156. enum RAKNET_DRIVER_SYNC
  157. {
  158. RAKNET_VEHICLE,
  159. PR_lrKey,
  160. PR_udKey,
  161. PR_keys,
  162.  
  163. Float: RAKNET_QUATERION_X,
  164. Float: RAKNET_QUATERION_Y,
  165. Float: RAKNET_QUATERION_Z,
  166. Float: RAKNET_QUATERION_R,
  167.  
  168. Float: RAKNET_POS_X,
  169. Float: RAKNET_POS_Y,
  170. Float: RAKNET_POS_Z,
  171.  
  172. Float: RAKNET_SPEED_X,
  173. Float: RAKNET_SPEED_Y,
  174. Float: RAKNET_SPEED_Z,
  175.  
  176. Float:PR_vehicleHealth,
  177. RAKNET_HEALTH,
  178. PR_armour,
  179. PR_weaponId,
  180. PR_additionalKey,
  181. PR_sirenState,
  182. PR_landingGearState,
  183. PR_trailerId,
  184. Float:PR_trainSpeed
  185. };
  186.  
  187. enum PR_TrailerSync
  188. {
  189. PR_trailerId,
  190. Float:PR_position[3],
  191. Float:PR_quaternion[4],
  192. Float:PR_velocity[3],
  193. Float:PR_angularVelocity[3]
  194. };
  195.  
  196. enum RAKNET_PASSENGER_SYNC
  197. {
  198. RAKNET_VEHICLE,
  199.  
  200. PR_seatId,
  201. PR_driveBy,
  202. PR_weaponId,
  203. PR_additionalKey,
  204. RAKNET_HEALTH,
  205. PR_playerArmour,
  206. PR_lrKey,
  207. PR_udKey,
  208. PR_keys,
  209. Float: RAKNET_POS_X,
  210. Float: RAKNET_POS_Y,
  211. Float: RAKNET_POS_Z
  212. };
  213.  
  214. enum PR_UnoccupiedSync
  215. {
  216. PR_vehicleId,
  217. PR_seatId,
  218. Float:PR_roll[3],
  219. Float:PR_direction[3],
  220. Float:PR_position[3],
  221. Float:PR_velocity[3],
  222. Float:PR_angularVelocity[3],
  223. Float:PR_vehicleHealth
  224. };
  225.  
  226. enum PR_AimSync
  227. {
  228. PR_camMode,
  229. Float:PR_camFrontVec[3],
  230. Float:PR_camPos[3],
  231. Float:PR_aimZ,
  232. PR_camZoom,
  233. PR_weaponState,
  234. PR_aspectRatio
  235. };
  236.  
  237. enum RAKNET_BULLET_SYNC
  238. {
  239. RAKNET_TYPE,
  240. RAKNET_DAMAGEDID,
  241.  
  242. RAKNET_START_X,
  243. RAKNET_START_Y,
  244. RAKNET_START_Z,
  245.  
  246. RAKNET_STOP_X,
  247. RAKNET_STOP_Y,
  248. RAKNET_STOP_Z,
  249.  
  250. RAKNET_OFFSET_X,
  251. RAKNET_OFFSET_Y,
  252. RAKNET_OFFSET_Z,
  253.  
  254. RAKNET_WEAPON
  255. };
  256.  
  257. /*
  258. * RPC list: https://github.com/P3ti/RakSAMP/blob/master/raknet/SAMP/SAMPRPC.cpp
  259. * Packet list: https://github.com/P3ti/RakSAMP/blob/master/raknet/PacketEnumerations.h
  260. *
  261. * playerid == -1 => send to all players (broadcast)
  262. */
  263.  
  264. native BS_RPC(BitStream:bs, playerid, rpcid, PR_PacketPriority:priority = PR_HIGH_PRIORITY, PR_PacketReliability:reliability = PR_RELIABLE_ORDERED);
  265. native BS_Send(BitStream:bs, playerid, PR_PacketPriority:priority = PR_HIGH_PRIORITY, PR_PacketReliability:reliability = PR_RELIABLE_ORDERED);
  266.  
  267. native BitStream:BS_New();
  268. native BS_Delete(&BitStream:bs);
  269.  
  270. native BS_Reset(BitStream:bs);
  271. native BS_ResetReadPointer(BitStream:bs);
  272. native BS_ResetWritePointer(BitStream:bs);
  273. native BS_IgnoreBits(BitStream:bs, number_of_bits);
  274.  
  275. native BS_SetWriteOffset(BitStream:bs, offset);
  276. native BS_GetWriteOffset(BitStream:bs, &offset);
  277. native BS_SetReadOffset(BitStream:bs, offset);
  278. native BS_GetReadOffset(BitStream:bs, &offset);
  279.  
  280. native BS_GetNumberOfBitsUsed(BitStream:bs, &number);
  281. native BS_GetNumberOfBytesUsed(BitStream:bs, &number);
  282. native BS_GetNumberOfUnreadBits(BitStream:bs, &number);
  283.  
  284. native BS_WriteValue(BitStream:bs, {PR_ValueType, Float, _}:...);
  285. native BS_ReadValue(BitStream:bs, {PR_ValueType, Float, _}:...);
  286.  
  287. #define BS_ReadInt8(%0,%1) BS_ReadValue(%0, PR_INT8, %1)
  288. #define BS_ReadInt16(%0,%1) BS_ReadValue(%0, PR_INT16, %1)
  289. #define BS_ReadInt32(%0,%1) BS_ReadValue(%0, PR_INT32, %1)
  290. #define BS_ReadUint8(%0,%1) BS_ReadValue(%0, PR_UINT8, %1)
  291. #define BS_ReadUint16(%0,%1) BS_ReadValue(%0, PR_UINT16, %1)
  292. #define BS_ReadUint32(%0,%1) BS_ReadValue(%0, PR_UINT32, %1)
  293. #define BS_ReadFloat(%0,%1) BS_ReadValue(%0, PR_FLOAT, %1)
  294. #define BS_ReadBool(%0,%1) BS_ReadValue(%0, PR_BOOL, %1)
  295. #define BS_ReadString(%0,%1,%2) BS_ReadValue(%0, PR_STRING, %1, %2)
  296.  
  297. #define BS_ReadCompressedInt8(%0,%1) BS_ReadValue(%0, PR_CINT8, %1)
  298. #define BS_ReadCompressedInt16(%0,%1) BS_ReadValue(%0, PR_CINT16, %1)
  299. #define BS_ReadCompressedInt32(%0,%1) BS_ReadValue(%0, PR_CINT32, %1)
  300. #define BS_ReadCompressedUint8(%0,%1) BS_ReadValue(%0, PR_CUINT8, %1)
  301. #define BS_ReadCompressedUint16(%0,%1) BS_ReadValue(%0, PR_CUINT16, %1)
  302. #define BS_ReadCompressedUint32(%0,%1) BS_ReadValue(%0, PR_CUINT32, %1)
  303. #define BS_ReadCompressedFloat(%0,%1) BS_ReadValue(%0, PR_CFLOAT, %1)
  304. #define BS_ReadCompressedBool(%0,%1) BS_ReadValue(%0, PR_CBOOL, %1)
  305. #define BS_ReadCompressedString(%0,%1,%2) BS_ReadValue(%0, PR_CSTRING, %1, %2)
  306.  
  307. #define BS_ReadBits(%0,%1,%2) BS_ReadValue(%0, PR_BITS, %1, %2)
  308.  
  309. #define BS_WriteInt8(%0,%1) BS_WriteValue(%0, PR_INT8, %1)
  310. #define BS_WriteInt16(%0,%1) BS_WriteValue(%0, PR_INT16, %1)
  311. #define BS_WriteInt32(%0,%1) BS_WriteValue(%0, PR_INT32, %1)
  312. #define BS_WriteUint8(%0,%1) BS_WriteValue(%0, PR_UINT8, %1)
  313. #define BS_WriteUint16(%0,%1) BS_WriteValue(%0, PR_UINT16, %1)
  314. #define BS_WriteUint32(%0,%1) BS_WriteValue(%0, PR_UINT32, %1)
  315. #define BS_WriteFloat(%0,%1) BS_WriteValue(%0, PR_FLOAT, %1)
  316. #define BS_WriteBool(%0,%1) BS_WriteValue(%0, PR_BOOL, %1)
  317. #define BS_WriteString(%0,%1) BS_WriteValue(%0, PR_STRING, %1)
  318.  
  319. #define BS_WriteCompressedInt8(%0,%1) BS_WriteValue(%0, PR_CINT8, %1)
  320. #define BS_WriteCompressedInt16(%0,%1) BS_WriteValue(%0, PR_CINT16, %1)
  321. #define BS_WriteCompressedInt32(%0,%1) BS_WriteValue(%0, PR_CINT32, %1)
  322. #define BS_WriteCompressedUint8(%0,%1) BS_WriteValue(%0, PR_CUINT8, %1)
  323. #define BS_WriteCompressedUint16(%0,%1) BS_WriteValue(%0, PR_CUINT16, %1)
  324. #define BS_WriteCompressedUint32(%0,%1) BS_WriteValue(%0, PR_CUINT32, %1)
  325. #define BS_WriteCompressedFloat(%0,%1) BS_WriteValue(%0, PR_CFLOAT, %1)
  326. #define BS_WriteCompressedBool(%0,%1) BS_WriteValue(%0, PR_CBOOL, %1)
  327. #define BS_WriteCompressedString(%0,%1) BS_WriteValue(%0, PR_CSTRING, %1)
  328.  
  329. #define BS_WriteBits(%0,%1,%2) BS_WriteValue(%0, PR_BITS, %1, %2)
  330.  
  331. stock BS_ReadOnFootSync(BitStream:bs, data[RAKNET_ONFOOT_SYNC])
  332. {
  333. BS_ReadValue(
  334. bs,
  335. PR_UINT16, data[PR_lrKey],
  336. PR_UINT16, data[PR_udKey],
  337. PR_UINT16, data[PR_keys],
  338.  
  339. PR_FLOAT, data[RAKNET_POS_X],
  340. PR_FLOAT, data[RAKNET_POS_Y],
  341. PR_FLOAT, data[RAKNET_POS_Z],
  342.  
  343. PR_FLOAT, data[RAKNET_QUATERION_X],
  344. PR_FLOAT, data[RAKNET_QUATERION_Y],
  345. PR_FLOAT, data[RAKNET_QUATERION_Z],
  346. PR_FLOAT, data[RAKNET_QUATERION_R],
  347.  
  348. PR_UINT8, data[RAKNET_HEALTH],
  349. PR_UINT8, data[PR_armour],
  350. PR_BITS, data[PR_additionalKey], 2,
  351. PR_BITS, data[RAKNET_WEAPON], 6,
  352. PR_UINT8, data[RAKNET_ACTION],
  353.  
  354. PR_FLOAT, data[RAKNET_SPEED_X],
  355. PR_FLOAT, data[RAKNET_SPEED_Y],
  356. PR_FLOAT, data[RAKNET_SPEED_Z],
  357.  
  358. PR_FLOAT, data[RAKNET_SURFING_X],
  359. PR_FLOAT, data[RAKNET_SURFING_Y],
  360. PR_FLOAT, data[RAKNET_SURFING_Z],
  361. PR_UINT16, data[RAKNET_SURFING_CAR_ID],
  362. PR_INT16, data[RAKNET_ANIM],
  363. PR_INT16, data[PR_animationFlags]
  364. );
  365. }
  366.  
  367. stock BS_ReadInCarSync(BitStream:bs, data[RAKNET_DRIVER_SYNC])
  368. {
  369. BS_ReadValue(
  370. bs,
  371. PR_UINT16, data[RAKNET_VEHICLE],
  372. PR_UINT16, data[PR_lrKey],
  373. PR_UINT16, data[PR_udKey],
  374. PR_UINT16, data[PR_keys],
  375.  
  376. PR_FLOAT, data[RAKNET_QUATERION_X],
  377. PR_FLOAT, data[RAKNET_QUATERION_Y],
  378. PR_FLOAT, data[RAKNET_QUATERION_Z],
  379. PR_FLOAT, data[RAKNET_QUATERION_R],
  380.  
  381. PR_FLOAT, data[RAKNET_POS_X],
  382. PR_FLOAT, data[RAKNET_POS_Y],
  383. PR_FLOAT, data[RAKNET_POS_Z],
  384.  
  385. PR_FLOAT, data[RAKNET_SPEED_X],
  386. PR_FLOAT, data[RAKNET_SPEED_Y],
  387. PR_FLOAT, data[RAKNET_SPEED_Z],
  388.  
  389. PR_FLOAT, data[PR_vehicleHealth],
  390. PR_UINT8, data[RAKNET_HEALTH],
  391. PR_UINT8, data[PR_armour],
  392. PR_BITS, data[PR_additionalKey], 2,
  393. PR_BITS, data[PR_weaponId], 6,
  394. PR_UINT8, data[PR_sirenState],
  395. PR_UINT8, data[PR_landingGearState],
  396. PR_UINT16, data[PR_trailerId],
  397. PR_FLOAT, data[PR_trainSpeed]
  398. );
  399. }
  400.  
  401. stock BS_ReadTrailerSync(BitStream:bs, data[PR_TrailerSync])
  402. {
  403. BS_ReadValue(
  404. bs,
  405. PR_UINT16, data[PR_trailerId],
  406. PR_FLOAT, data[PR_position][0],
  407. PR_FLOAT, data[PR_position][1],
  408. PR_FLOAT, data[PR_position][2],
  409. PR_FLOAT, data[PR_quaternion][0],
  410. PR_FLOAT, data[PR_quaternion][1],
  411. PR_FLOAT, data[PR_quaternion][2],
  412. PR_FLOAT, data[PR_quaternion][3],
  413. PR_FLOAT, data[PR_velocity][0],
  414. PR_FLOAT, data[PR_velocity][1],
  415. PR_FLOAT, data[PR_velocity][2],
  416. PR_FLOAT, data[PR_angularVelocity][0],
  417. PR_FLOAT, data[PR_angularVelocity][1],
  418. PR_FLOAT, data[PR_angularVelocity][2]
  419. );
  420. }
  421.  
  422. stock BS_ReadPassengerSync(BitStream:bs, data[RAKNET_PASSENGER_SYNC])
  423. {
  424. BS_ReadValue(
  425. bs,
  426. PR_UINT16, data[RAKNET_VEHICLE],
  427. PR_BITS, data[PR_driveBy], 2,
  428. PR_BITS, data[PR_seatId], 6,
  429. PR_BITS, data[PR_additionalKey], 2,
  430. PR_BITS, data[PR_weaponId], 6,
  431. PR_UINT8, data[RAKNET_HEALTH],
  432. PR_UINT8, data[PR_playerArmour],
  433. PR_UINT16, data[PR_lrKey],
  434. PR_UINT16, data[PR_udKey],
  435. PR_UINT16, data[PR_keys],
  436. PR_FLOAT, data[RAKNET_POS_X],
  437. PR_FLOAT, data[RAKNET_POS_Y],
  438. PR_FLOAT, data[RAKNET_POS_Z]
  439. );
  440. }
  441.  
  442. stock BS_ReadUnoccupiedSync(BitStream:bs, data[PR_UnoccupiedSync])
  443. {
  444. BS_ReadValue(
  445. bs,
  446. PR_UINT16, data[PR_vehicleId],
  447. PR_UINT8, data[PR_seatId],
  448. PR_FLOAT, data[PR_roll][0],
  449. PR_FLOAT, data[PR_roll][1],
  450. PR_FLOAT, data[PR_roll][2],
  451. PR_FLOAT, data[PR_direction][0],
  452. PR_FLOAT, data[PR_direction][1],
  453. PR_FLOAT, data[PR_direction][2],
  454. PR_FLOAT, data[PR_position][0],
  455. PR_FLOAT, data[PR_position][1],
  456. PR_FLOAT, data[PR_position][2],
  457. PR_FLOAT, data[PR_velocity][0],
  458. PR_FLOAT, data[PR_velocity][1],
  459. PR_FLOAT, data[PR_velocity][2],
  460. PR_FLOAT, data[PR_angularVelocity][0],
  461. PR_FLOAT, data[PR_angularVelocity][1],
  462. PR_FLOAT, data[PR_angularVelocity][2],
  463. PR_FLOAT, data[PR_vehicleHealth]
  464. );
  465. }
  466.  
  467. stock BS_ReadAimSync(BitStream:bs, data[PR_AimSync])
  468. {
  469. BS_ReadValue(
  470. bs,
  471. PR_UINT8, data[PR_camMode],
  472. PR_FLOAT, data[PR_camFrontVec][0],
  473. PR_FLOAT, data[PR_camFrontVec][1],
  474. PR_FLOAT, data[PR_camFrontVec][2],
  475. PR_FLOAT, data[PR_camPos][0],
  476. PR_FLOAT, data[PR_camPos][1],
  477. PR_FLOAT, data[PR_camPos][2],
  478. PR_FLOAT, data[PR_aimZ],
  479. PR_BITS, data[PR_weaponState], 2,
  480. PR_BITS, data[PR_camZoom], 6,
  481. PR_UINT8, data[PR_aspectRatio]
  482. );
  483. }
  484.  
  485. stock BS_ReadBulletSync(BitStream:bs, data[RAKNET_BULLET_SYNC])
  486. {
  487. BS_ReadValue(
  488. bs,
  489. PR_UINT8, data[RAKNET_TYPE],
  490. PR_UINT16, data[RAKNET_DAMAGEDID],
  491.  
  492. PR_FLOAT, data[RAKNET_START_X],
  493. PR_FLOAT, data[RAKNET_START_Y],
  494. PR_FLOAT, data[RAKNET_START_Z],
  495.  
  496. PR_FLOAT, data[RAKNET_STOP_X],
  497. PR_FLOAT, data[RAKNET_STOP_Y],
  498. PR_FLOAT, data[RAKNET_STOP_Z],
  499.  
  500. PR_FLOAT, data[RAKNET_OFFSET_X],
  501. PR_FLOAT, data[RAKNET_OFFSET_Y],
  502. PR_FLOAT, data[RAKNET_OFFSET_Z],
  503. PR_UINT8, data[RAKNET_WEAPON]
  504. );
  505. }
  506.  
  507. stock BS_WriteOnFootSync(BitStream:bs, data[RAKNET_ONFOOT_SYNC])
  508. {
  509. BS_WriteValue(
  510. bs,
  511. PR_UINT16, data[PR_lrKey],
  512. PR_UINT16, data[PR_udKey],
  513. PR_UINT16, data[PR_keys],
  514.  
  515. PR_FLOAT, data[RAKNET_POS_X],
  516. PR_FLOAT, data[RAKNET_POS_Y],
  517. PR_FLOAT, data[RAKNET_POS_Z],
  518.  
  519. PR_FLOAT, data[RAKNET_QUATERION_X],
  520. PR_FLOAT, data[RAKNET_QUATERION_Y],
  521. PR_FLOAT, data[RAKNET_QUATERION_Z],
  522. PR_FLOAT, data[RAKNET_QUATERION_R],
  523.  
  524. PR_UINT8, data[RAKNET_HEALTH],
  525. PR_UINT8, data[PR_armour],
  526. PR_BITS, data[PR_additionalKey], 2,
  527. PR_BITS, data[RAKNET_WEAPON], 6,
  528. PR_UINT8, data[RAKNET_ACTION],
  529.  
  530. PR_FLOAT, data[RAKNET_SPEED_X],
  531. PR_FLOAT, data[RAKNET_SPEED_Y],
  532. PR_FLOAT, data[RAKNET_SPEED_Z],
  533.  
  534. PR_FLOAT, data[RAKNET_SURFING_X],
  535. PR_FLOAT, data[RAKNET_SURFING_Y],
  536. PR_FLOAT, data[RAKNET_SURFING_Z],
  537. PR_UINT16, data[RAKNET_SURFING_CAR_ID],
  538. PR_INT16, data[RAKNET_ANIM],
  539. PR_INT16, data[PR_animationFlags]
  540. );
  541. }
  542.  
  543. stock BS_WriteInCarSync(BitStream:bs, data[RAKNET_DRIVER_SYNC])
  544. {
  545. BS_WriteValue(
  546. bs,
  547. PR_UINT16, data[RAKNET_VEHICLE],
  548. PR_UINT16, data[PR_lrKey],
  549. PR_UINT16, data[PR_udKey],
  550. PR_UINT16, data[PR_keys],
  551.  
  552. PR_FLOAT, data[RAKNET_QUATERION_X],
  553. PR_FLOAT, data[RAKNET_QUATERION_Y],
  554. PR_FLOAT, data[RAKNET_QUATERION_Z],
  555. PR_FLOAT, data[RAKNET_QUATERION_R],
  556.  
  557. PR_FLOAT, data[RAKNET_POS_X],
  558. PR_FLOAT, data[RAKNET_POS_Y],
  559. PR_FLOAT, data[RAKNET_POS_Z],
  560.  
  561. PR_FLOAT, data[RAKNET_SPEED_X],
  562. PR_FLOAT, data[RAKNET_SPEED_Y],
  563. PR_FLOAT, data[RAKNET_SPEED_Z],
  564.  
  565. PR_FLOAT, data[PR_vehicleHealth],
  566. PR_UINT8, data[RAKNET_HEALTH],
  567. PR_UINT8, data[PR_armour],
  568. PR_BITS, data[PR_additionalKey], 2,
  569. PR_BITS, data[PR_weaponId], 6,
  570. PR_UINT8, data[PR_sirenState],
  571. PR_UINT8, data[PR_landingGearState],
  572. PR_UINT16, data[PR_trailerId],
  573. PR_FLOAT, data[PR_trainSpeed]
  574. );
  575. }
  576.  
  577. stock BS_WriteTrailerSync(BitStream:bs, data[PR_TrailerSync])
  578. {
  579. BS_WriteValue(
  580. bs,
  581. PR_UINT16, data[PR_trailerId],
  582. PR_FLOAT, data[PR_position][0],
  583. PR_FLOAT, data[PR_position][1],
  584. PR_FLOAT, data[PR_position][2],
  585. PR_FLOAT, data[PR_quaternion][0],
  586. PR_FLOAT, data[PR_quaternion][1],
  587. PR_FLOAT, data[PR_quaternion][2],
  588. PR_FLOAT, data[PR_quaternion][3],
  589. PR_FLOAT, data[PR_velocity][0],
  590. PR_FLOAT, data[PR_velocity][1],
  591. PR_FLOAT, data[PR_velocity][2],
  592. PR_FLOAT, data[PR_angularVelocity][0],
  593. PR_FLOAT, data[PR_angularVelocity][1],
  594. PR_FLOAT, data[PR_angularVelocity][2]
  595. );
  596. }
  597.  
  598. stock BS_WritePassengerSync(BitStream:bs, data[RAKNET_PASSENGER_SYNC])
  599. {
  600. BS_WriteValue(
  601. bs,
  602. PR_UINT16, data[RAKNET_VEHICLE],
  603. PR_BITS, data[PR_driveBy], 2,
  604. PR_BITS, data[PR_seatId], 6,
  605. PR_BITS, data[PR_additionalKey], 2,
  606. PR_BITS, data[PR_weaponId], 6,
  607. PR_UINT8, data[RAKNET_HEALTH],
  608. PR_UINT8, data[PR_playerArmour],
  609. PR_UINT16, data[PR_lrKey],
  610. PR_UINT16, data[PR_udKey],
  611. PR_UINT16, data[PR_keys],
  612.  
  613. PR_FLOAT, data[RAKNET_POS_X],
  614. PR_FLOAT, data[RAKNET_POS_Y],
  615. PR_FLOAT, data[RAKNET_POS_Z]
  616. );
  617. }
  618.  
  619. stock BS_WriteUnoccupiedSync(BitStream:bs, data[PR_UnoccupiedSync])
  620. {
  621. BS_WriteValue(
  622. bs,
  623. PR_UINT16, data[PR_vehicleId],
  624. PR_UINT8, data[PR_seatId],
  625. PR_FLOAT, data[PR_roll][0],
  626. PR_FLOAT, data[PR_roll][1],
  627. PR_FLOAT, data[PR_roll][2],
  628. PR_FLOAT, data[PR_direction][0],
  629. PR_FLOAT, data[PR_direction][1],
  630. PR_FLOAT, data[PR_direction][2],
  631. PR_FLOAT, data[PR_position][0],
  632. PR_FLOAT, data[PR_position][1],
  633. PR_FLOAT, data[PR_position][2],
  634. PR_FLOAT, data[PR_velocity][0],
  635. PR_FLOAT, data[PR_velocity][1],
  636. PR_FLOAT, data[PR_velocity][2],
  637. PR_FLOAT, data[PR_angularVelocity][0],
  638. PR_FLOAT, data[PR_angularVelocity][1],
  639. PR_FLOAT, data[PR_angularVelocity][2],
  640. PR_FLOAT, data[PR_vehicleHealth]
  641. );
  642. }
  643.  
  644. stock BS_WriteAimSync(BitStream:bs, data[PR_AimSync])
  645. {
  646. BS_WriteValue(
  647. bs,
  648. PR_UINT8, data[PR_camMode],
  649. PR_FLOAT, data[PR_camFrontVec][0],
  650. PR_FLOAT, data[PR_camFrontVec][1],
  651. PR_FLOAT, data[PR_camFrontVec][2],
  652. PR_FLOAT, data[PR_camPos][0],
  653. PR_FLOAT, data[PR_camPos][1],
  654. PR_FLOAT, data[PR_camPos][2],
  655. PR_FLOAT, data[PR_aimZ],
  656. PR_BITS, data[PR_weaponState], 2,
  657. PR_BITS, data[PR_camZoom], 6,
  658. PR_UINT8, data[PR_aspectRatio]
  659. );
  660. }
  661.  
  662. stock BS_WriteBulletSync(BitStream:bs, data[RAKNET_BULLET_SYNC])
  663. {
  664. BS_WriteValue(
  665. bs,
  666. PR_UINT8, data[RAKNET_TYPE],
  667. PR_UINT16, data[RAKNET_DAMAGEDID],
  668.  
  669. PR_FLOAT, data[RAKNET_START_X],
  670. PR_FLOAT, data[RAKNET_START_Y],
  671. PR_FLOAT, data[RAKNET_START_Z],
  672.  
  673. PR_FLOAT, data[RAKNET_STOP_X],
  674. PR_FLOAT, data[RAKNET_STOP_Y],
  675. PR_FLOAT, data[RAKNET_STOP_Z],
  676.  
  677. PR_FLOAT, data[RAKNET_OFFSET_X],
  678. PR_FLOAT, data[RAKNET_OFFSET_Y],
  679. PR_FLOAT, data[RAKNET_OFFSET_Z],
  680. PR_UINT8, data[RAKNET_WEAPON]
  681. );
  682. }
  683.  
  684. native PR_RegHandler(id, const publicname[], PR_HandlerType:type);
  685.  
  686. /*
  687. * playerid == -1 => send to all players (broadcast)
  688. */
  689.  
  690. forward OnIncomingPacket(playerid, packetid, BitStream:bs);
  691. forward OnIncomingRPC(playerid, rpcid, BitStream:bs);
  692. forward OnOutcomingPacket(playerid, packetid, BitStream:bs);
  693. forward OnOutcomingRPC(playerid, rpcid, BitStream:bs);
  694. #endif // !defined __cplusplus
  695. #endif // PAWNRAKNET_INC_
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement