streamer.inc 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. /*
  2. * Copyright (C) 2014 Incognito
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <a_samp>
  17. // Definitions
  18. #define STREAMER_TYPE_OBJECT (0)
  19. #define STREAMER_TYPE_PICKUP (1)
  20. #define STREAMER_TYPE_CP (2)
  21. #define STREAMER_TYPE_RACE_CP (3)
  22. #define STREAMER_TYPE_MAP_ICON (4)
  23. #define STREAMER_TYPE_3D_TEXT_LABEL (5)
  24. #define STREAMER_TYPE_AREA (6)
  25. #define STREAMER_AREA_TYPE_CIRCLE (0)
  26. #define STREAMER_AREA_TYPE_RECTANGLE (1)
  27. #define STREAMER_AREA_TYPE_SPHERE (2)
  28. #define STREAMER_AREA_TYPE_CUBE (3)
  29. #define STREAMER_AREA_TYPE_POLYGON (4)
  30. #define STREAMER_OBJECT_TYPE_GLOBAL (0)
  31. #define STREAMER_OBJECT_TYPE_PLAYER (1)
  32. #define STREAMER_OBJECT_TYPE_DYNAMIC (2)
  33. #if !defined FLOAT_INFINITY
  34. #define FLOAT_INFINITY (Float:0x7F800000)
  35. #endif
  36. // Include File Version
  37. public Streamer_IncludeFileVersion = 0x27201;
  38. #pragma unused Streamer_IncludeFileVersion
  39. // Enumerator
  40. enum
  41. {
  42. E_STREAMER_ATTACHED_OBJECT,
  43. E_STREAMER_ATTACHED_PLAYER,
  44. E_STREAMER_ATTACHED_VEHICLE,
  45. E_STREAMER_ATTACH_OFFSET_X,
  46. E_STREAMER_ATTACH_OFFSET_Y,
  47. E_STREAMER_ATTACH_OFFSET_Z,
  48. E_STREAMER_ATTACH_R_X,
  49. E_STREAMER_ATTACH_R_Y,
  50. E_STREAMER_ATTACH_R_Z,
  51. E_STREAMER_ATTACH_X,
  52. E_STREAMER_ATTACH_Y,
  53. E_STREAMER_ATTACH_Z,
  54. E_STREAMER_COLOR,
  55. E_STREAMER_DRAW_DISTANCE,
  56. E_STREAMER_EXTRA_ID,
  57. E_STREAMER_INTERIOR_ID,
  58. E_STREAMER_MAX_X,
  59. E_STREAMER_MAX_Y,
  60. E_STREAMER_MAX_Z,
  61. E_STREAMER_MIN_X,
  62. E_STREAMER_MIN_Y,
  63. E_STREAMER_MIN_Z,
  64. E_STREAMER_MODEL_ID,
  65. E_STREAMER_MOVE_R_X,
  66. E_STREAMER_MOVE_R_Y,
  67. E_STREAMER_MOVE_R_Z,
  68. E_STREAMER_MOVE_SPEED,
  69. E_STREAMER_MOVE_X,
  70. E_STREAMER_MOVE_Y,
  71. E_STREAMER_MOVE_Z,
  72. E_STREAMER_NEXT_X,
  73. E_STREAMER_NEXT_Y,
  74. E_STREAMER_NEXT_Z,
  75. E_STREAMER_PLAYER_ID,
  76. E_STREAMER_R_X,
  77. E_STREAMER_R_Y,
  78. E_STREAMER_R_Z,
  79. E_STREAMER_SIZE,
  80. E_STREAMER_STREAM_DISTANCE,
  81. E_STREAMER_STYLE,
  82. E_STREAMER_TEST_LOS,
  83. E_STREAMER_TYPE,
  84. E_STREAMER_WORLD_ID,
  85. E_STREAMER_X,
  86. E_STREAMER_Y,
  87. E_STREAMER_Z
  88. }
  89. // Natives (Settings)
  90. native Streamer_GetTickRate();
  91. native Streamer_SetTickRate(rate);
  92. native Streamer_GetMaxItems(type);
  93. native Streamer_SetMaxItems(type, items);
  94. native Streamer_GetVisibleItems(type);
  95. native Streamer_SetVisibleItems(type, items);
  96. native Streamer_GetCellDistance(&Float:distance);
  97. native Streamer_SetCellDistance(Float:distance);
  98. native Streamer_GetCellSize(&Float:size);
  99. native Streamer_SetCellSize(Float:size);
  100. // Natives (Updates)
  101. native Streamer_ProcessActiveItems();
  102. native Streamer_ToggleIdleUpdate(playerid, toggle);
  103. native Streamer_IsToggleIdleUpdate(playerid);
  104. native Streamer_ToggleItemUpdate(playerid, type, toggle);
  105. native Streamer_IsToggleItemUpdate(playerid, type);
  106. native Streamer_Update(playerid);
  107. native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
  108. // Natives (Data Manipulation)
  109. native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
  110. native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
  111. native Streamer_GetIntData(type, {Text3D,_}:id, data);
  112. native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
  113. native Streamer_GetArrayData(type, {Text3D,_}:id, data, dest[], maxlength = sizeof dest);
  114. native Streamer_SetArrayData(type, {Text3D,_}:id, data, const src[], maxlength = sizeof src);
  115. native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
  116. native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
  117. native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
  118. native Streamer_GetUpperBound(type);
  119. // Natives (Miscellaneous)
  120. native Streamer_GetDistanceToItem(Float:x, Float:y, Float:z, type, {Text3D,_}:id, &Float:distance, dimensions = 3);
  121. native Streamer_GetItemInternalID(playerid, type, {Text3D,_}:streamerid);
  122. native Streamer_GetItemStreamerID(playerid, type, {Text3D,_}:internalid);
  123. native Streamer_IsItemVisible(playerid, type, {Text3D,_}:id);
  124. native Streamer_DestroyAllVisibleItems(playerid, type, serverwide = 1);
  125. native Streamer_CountVisibleItems(playerid, type, serverwide = 1);
  126. native Streamer_DestroyAllItems(type, serverwide = 1);
  127. native Streamer_CountItems(type, serverwide = 1);
  128. // Natives (Objects)
  129. native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0, Float:drawdistance = 0.0);
  130. native DestroyDynamicObject(objectid);
  131. native IsValidDynamicObject(objectid);
  132. native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
  133. native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z);
  134. native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz);
  135. native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz);
  136. native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed, Float:rx = -1000.0, Float:ry = -1000.0, Float:rz = -1000.0);
  137. native StopDynamicObject(objectid);
  138. native IsDynamicObjectMoving(objectid);
  139. native AttachCameraToDynamicObject(playerid, objectid);
  140. native AttachDynamicObjectToVehicle(objectid, vehicleid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz);
  141. native EditDynamicObject(playerid, objectid);
  142. native GetDynamicObjectMaterial(objectid, materialindex, &modelid, txdname[], texturename[], &materialcolor, maxtxdname = sizeof txdname, maxtexturename = sizeof texturename);
  143. native SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0);
  144. native GetDynamicObjectMaterialText(objectid, materialindex, text[], &materialsize, fontface[], &fontsize, &bold, &fontcolor, &backcolor, &textalignment, maxtext = sizeof text, maxfontface = sizeof fontface);
  145. native SetDynamicObjectMaterialText(objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
  146. // Natives (Pickups)
  147. native CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  148. native DestroyDynamicPickup(pickupid);
  149. native IsValidDynamicPickup(pickupid);
  150. // Natives (Checkpoints)
  151. native CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  152. native DestroyDynamicCP(checkpointid);
  153. native IsValidDynamicCP(checkpointid);
  154. native TogglePlayerDynamicCP(playerid, checkpointid, toggle);
  155. native TogglePlayerAllDynamicCPs(playerid, toggle);
  156. native IsPlayerInDynamicCP(playerid, checkpointid);
  157. native GetPlayerVisibleDynamicCP(playerid);
  158. // Natives (Race Checkpoints)
  159. native CreateDynamicRaceCP(type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  160. native DestroyDynamicRaceCP(checkpointid);
  161. native IsValidDynamicRaceCP(checkpointid);
  162. native TogglePlayerDynamicRaceCP(playerid, checkpointid, toggle);
  163. native TogglePlayerAllDynamicRaceCPs(playerid, toggle);
  164. native IsPlayerInDynamicRaceCP(playerid, checkpointid);
  165. native GetPlayerVisibleDynamicRaceCP(playerid);
  166. // Natives (Map Icons)
  167. native CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0, style = MAPICON_LOCAL);
  168. native DestroyDynamicMapIcon(iconid);
  169. native IsValidDynamicMapIcon(iconid);
  170. // Natives (3D Text Labels)
  171. native Text3D:CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  172. native DestroyDynamic3DTextLabel(Text3D:id);
  173. native IsValidDynamic3DTextLabel(Text3D:id);
  174. native GetDynamic3DTextLabelText(Text3D:id, text[], maxlength = sizeof text);
  175. native UpdateDynamic3DTextLabelText(Text3D:id, color, const text[]);
  176. // Natives (Areas)
  177. native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  178. native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
  179. native CreateDynamicSphere(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  180. native CreateDynamicCube(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worldid = -1, interiorid = -1, playerid = -1);
  181. native CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1);
  182. native DestroyDynamicArea(areaid);
  183. native IsValidDynamicArea(areaid);
  184. native GetDynamicPolygonPoints(areaid, Float:points[], maxlength = sizeof points);
  185. native GetDynamicPolygonNumberPoints(areaid);
  186. native TogglePlayerDynamicArea(playerid, areaid, toggle);
  187. native TogglePlayerAllDynamicAreas(playerid, toggle);
  188. native IsPlayerInDynamicArea(playerid, areaid, recheck = 0);
  189. native IsPlayerInAnyDynamicArea(playerid, recheck = 0);
  190. native IsAnyPlayerInDynamicArea(areaid, recheck = 0);
  191. native IsAnyPlayerInAnyDynamicArea(recheck = 0);
  192. native GetPlayerDynamicAreas(playerid, areas[], maxlength = sizeof areas);
  193. native GetPlayerNumberDynamicAreas(playerid);
  194. native IsPointInDynamicArea(areaid, Float:x, Float:y, Float:z);
  195. native IsPointInAnyDynamicArea(Float:x, Float:y, Float:z);
  196. native AttachDynamicAreaToObject(areaid, objectid, type = STREAMER_OBJECT_TYPE_DYNAMIC, playerid = INVALID_PLAYER_ID);
  197. native AttachDynamicAreaToPlayer(areaid, playerid);
  198. native AttachDynamicAreaToVehicle(areaid, vehicleid);
  199. // Natives (Extended)
  200. native CreateDynamicObjectEx(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:drawdistance = 0.0, Float:streamdistance = 200.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  201. native CreateDynamicPickupEx(modelid, type, Float:x, Float:y, Float:z, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  202. native CreateDynamicCPEx(Float:x, Float:y, Float:z, Float:size, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  203. native CreateDynamicRaceCPEx(type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  204. native CreateDynamicMapIconEx(Float:x, Float:y, Float:z, type, color, style = MAPICON_LOCAL, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  205. native Text3D:CreateDynamic3DTextLabelEx(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, Float:streamdistance = 100.0, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  206. native CreateDynamicCircleEx(Float:x, Float:y, Float:size, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  207. native CreateDynamicRectangleEx(Float:minx, Float:miny, Float:maxx, Float:maxy, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  208. native CreateDynamicSphereEx(Float:x, Float:y, Float:z, Float:size, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  209. native CreateDynamicCubeEx(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  210. native CreateDynamicPolygonEx(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  211. // Natives (Internal)
  212. native Streamer_CallbackHook(callback, {Float,_}:...);
  213. // Natives (Deprecated)
  214. native Streamer_TickRate(rate);
  215. native Streamer_MaxItems(type, items);
  216. native Streamer_VisibleItems(type, items);
  217. native Streamer_CellDistance(Float:distance);
  218. native Streamer_CellSize(Float:size);
  219. native DestroyAllDynamicObjects();
  220. native CountDynamicObjects();
  221. native DestroyAllDynamicPickups();
  222. native CountDynamicPickups();
  223. native DestroyAllDynamicCPs();
  224. native CountDynamicCPs();
  225. native DestroyAllDynamicRaceCPs();
  226. native CountDynamicRaceCPs();
  227. native DestroyAllDynamicMapIcons();
  228. native CountDynamicMapIcons();
  229. native DestroyAllDynamic3DTextLabels();
  230. native CountDynamic3DTextLabels();
  231. native DestroyAllDynamicAreas();
  232. native CountDynamicAreas();
  233. // Callbacks
  234. forward OnDynamicObjectMoved(objectid);
  235. forward OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
  236. forward OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z);
  237. forward OnPlayerShootDynamicObject(playerid, weaponid, objectid, Float:x, Float:y, Float:z);
  238. forward OnPlayerPickUpDynamicPickup(playerid, pickupid);
  239. forward OnPlayerEnterDynamicCP(playerid, checkpointid);
  240. forward OnPlayerLeaveDynamicCP(playerid, checkpointid);
  241. forward OnPlayerEnterDynamicRaceCP(playerid, checkpointid);
  242. forward OnPlayerLeaveDynamicRaceCP(playerid, checkpointid);
  243. forward OnPlayerEnterDynamicArea(playerid, areaid);
  244. forward OnPlayerLeaveDynamicArea(playerid, areaid);
  245. // Callback Hook Section
  246. #define STREAMER_OPC (0)
  247. #define STREAMER_OPDC (1)
  248. #define STREAMER_OPEO (2)
  249. #define STREAMER_OPSO (3)
  250. #define STREAMER_OPPP (4)
  251. #define STREAMER_OPEC (5)
  252. #define STREAMER_OPLC (6)
  253. #define STREAMER_OPERC (7)
  254. #define STREAMER_OPLRC (8)
  255. #define STREAMER_OPWS (9)
  256. public OnPlayerConnect(playerid)
  257. {
  258. Streamer_CallbackHook(STREAMER_OPC, playerid);
  259. #if defined Streamer_OnPlayerConnect
  260. return Streamer_OnPlayerConnect(playerid);
  261. #else
  262. return 1;
  263. #endif
  264. }
  265. #if defined Streamer_OnPlayerConnect
  266. forward Streamer_OnPlayerConnect(playerid);
  267. #endif
  268. #if defined _ALS_OnPlayerConnect
  269. #undef OnPlayerConnect
  270. #else
  271. #define _ALS_OnPlayerConnect
  272. #endif
  273. #define OnPlayerConnect Streamer_OnPlayerConnect
  274. public OnPlayerDisconnect(playerid, reason)
  275. {
  276. Streamer_CallbackHook(STREAMER_OPDC, playerid, reason);
  277. #if defined Streamer_OnPlayerDisconnect
  278. return Streamer_OnPlayerDisconnect(playerid, reason);
  279. #else
  280. return 1;
  281. #endif
  282. }
  283. #if defined Streamer_OnPlayerDisconnect
  284. forward Streamer_OnPlayerDisconnect(playerid, reason);
  285. #endif
  286. #if defined _ALS_OnPlayerDisconnect
  287. #undef OnPlayerDisconnect
  288. #else
  289. #define _ALS_OnPlayerDisconnect
  290. #endif
  291. #define OnPlayerDisconnect Streamer_OnPlayerDisconnect
  292. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  293. {
  294. if (playerobject)
  295. {
  296. Streamer_CallbackHook(STREAMER_OPEO, playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
  297. }
  298. #if defined Streamer_OnPlayerEditObject
  299. return Streamer_OnPlayerEditObject(playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
  300. #else
  301. return 1;
  302. #endif
  303. }
  304. #if defined Streamer_OnPlayerEditObject
  305. forward Streamer_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  306. #endif
  307. #if defined _ALS_OnPlayerEditObject
  308. #undef OnPlayerEditObject
  309. #else
  310. #define _ALS_OnPlayerEditObject
  311. #endif
  312. #define OnPlayerEditObject Streamer_OnPlayerEditObject
  313. public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
  314. {
  315. if (type == SELECT_OBJECT_PLAYER_OBJECT)
  316. {
  317. Streamer_CallbackHook(STREAMER_OPSO, playerid, type, objectid, modelid, fX, fY, fZ);
  318. }
  319. #if defined Streamer_OnPlayerSelectObject
  320. return Streamer_OnPlayerSelectObject(playerid, type, objectid, modelid, fX, fY, fZ);
  321. #else
  322. return 1;
  323. #endif
  324. }
  325. #if defined Streamer_OnPlayerSelectObject
  326. forward Streamer_OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
  327. #endif
  328. #if defined _ALS_OnPlayerSelectObject
  329. #undef OnPlayerSelectObject
  330. #else
  331. #define _ALS_OnPlayerSelectObject
  332. #endif
  333. #define OnPlayerSelectObject Streamer_OnPlayerSelectObject
  334. public OnPlayerPickUpPickup(playerid, pickupid)
  335. {
  336. Streamer_CallbackHook(STREAMER_OPPP, playerid, pickupid);
  337. #if defined Streamer_OnPlayerPickUpPickup
  338. return Streamer_OnPlayerPickUpPickup(playerid, pickupid);
  339. #else
  340. return 1;
  341. #endif
  342. }
  343. #if defined Streamer_OnPlayerPickUpPickup
  344. forward Streamer_OnPlayerPickUpPickup(playerid, pickupid);
  345. #endif
  346. #if defined _ALS_OnPlayerPickUpPickup
  347. #undef OnPlayerPickUpPickup
  348. #else
  349. #define _ALS_OnPlayerPickUpPickup
  350. #endif
  351. #define OnPlayerPickUpPickup Streamer_OnPlayerPickUpPickup
  352. public OnPlayerEnterCheckpoint(playerid)
  353. {
  354. Streamer_CallbackHook(STREAMER_OPEC, playerid);
  355. #if defined Streamer_OnPlayerEnterCP
  356. return Streamer_OnPlayerEnterCP(playerid);
  357. #else
  358. return 1;
  359. #endif
  360. }
  361. #if defined Streamer_OnPlayerEnterCP
  362. forward Streamer_OnPlayerEnterCP(playerid);
  363. #endif
  364. #if defined _ALS_OnPlayerEnterCheckpoint
  365. #undef OnPlayerEnterCheckpoint
  366. #else
  367. #define _ALS_OnPlayerEnterCheckpoint
  368. #endif
  369. #define OnPlayerEnterCheckpoint Streamer_OnPlayerEnterCP
  370. public OnPlayerLeaveCheckpoint(playerid)
  371. {
  372. Streamer_CallbackHook(STREAMER_OPLC, playerid);
  373. #if defined Streamer_OnPlayerLeaveCP
  374. return Streamer_OnPlayerLeaveCP(playerid);
  375. #else
  376. return 1;
  377. #endif
  378. }
  379. #if defined Streamer_OnPlayerLeaveCP
  380. forward Streamer_OnPlayerLeaveCP(playerid);
  381. #endif
  382. #if defined _ALS_OnPlayerLeaveCheckpoint
  383. #undef OnPlayerLeaveCheckpoint
  384. #else
  385. #define _ALS_OnPlayerLeaveCheckpoint
  386. #endif
  387. #define OnPlayerLeaveCheckpoint Streamer_OnPlayerLeaveCP
  388. public OnPlayerEnterRaceCheckpoint(playerid)
  389. {
  390. Streamer_CallbackHook(STREAMER_OPERC, playerid);
  391. #if defined Streamer_OnPlayerEnterRaceCP
  392. return Streamer_OnPlayerEnterRaceCP(playerid);
  393. #else
  394. return 1;
  395. #endif
  396. }
  397. #if defined Streamer_OnPlayerEnterRaceCP
  398. forward Streamer_OnPlayerEnterRaceCP(playerid);
  399. #endif
  400. #if defined _ALS_OnPlayerEnterRaceCP
  401. #undef OnPlayerEnterRaceCheckpoint
  402. #else
  403. #define _ALS_OnPlayerEnterRaceCP
  404. #endif
  405. #define OnPlayerEnterRaceCheckpoint Streamer_OnPlayerEnterRaceCP
  406. public OnPlayerLeaveRaceCheckpoint(playerid)
  407. {
  408. Streamer_CallbackHook(STREAMER_OPLRC, playerid);
  409. #if defined Streamer_OnPlayerLeaveRaceCP
  410. return Streamer_OnPlayerLeaveRaceCP(playerid);
  411. #else
  412. return 1;
  413. #endif
  414. }
  415. #if defined Streamer_OnPlayerLeaveRaceCP
  416. forward Streamer_OnPlayerLeaveRaceCP(playerid);
  417. #endif
  418. #if defined _ALS_OnPlayerLeaveRaceCP
  419. #undef OnPlayerLeaveRaceCheckpoint
  420. #else
  421. #define _ALS_OnPlayerLeaveRaceCP
  422. #endif
  423. #define OnPlayerLeaveRaceCheckpoint Streamer_OnPlayerLeaveRaceCP
  424. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  425. {
  426. if (hittype == BULLET_HIT_TYPE_PLAYER_OBJECT)
  427. {
  428. Streamer_CallbackHook(STREAMER_OPWS, playerid, weaponid, hittype, hitid, fX, fY, fZ);
  429. }
  430. #if defined Streamer_OnPlayerWeaponShot
  431. return Streamer_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, fX, fY, fZ);
  432. #else
  433. return 1;
  434. #endif
  435. }
  436. #if defined Streamer_OnPlayerWeaponShot
  437. forward Streamer_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  438. #endif
  439. #if defined _ALS_OnPlayerWeaponShot
  440. #undef OnPlayerWeaponShot
  441. #else
  442. #define _ALS_OnPlayerWeaponShot
  443. #endif
  444. #define OnPlayerWeaponShot Streamer_OnPlayerWeaponShot