streamer - Copia.inc 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. /*
  2. * Copyright (C) 2012 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 = 0x26105;
  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_TickRate(rate);
  91. native Streamer_MaxItems(type, items);
  92. native Streamer_VisibleItems(type, items);
  93. native Streamer_CellDistance(Float:distance);
  94. native Streamer_CellSize(Float:size);
  95. // Natives (Updates)
  96. native Streamer_ProcessActiveItems();
  97. native Streamer_ToggleIdleUpdate(playerid, toggle);
  98. native Streamer_ToggleItemUpdate(playerid, type, toggle);
  99. native Streamer_Update(playerid);
  100. native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
  101. // Natives (Data Manipulation)
  102. native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
  103. native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
  104. native Streamer_GetIntData(type, {Text3D,_}:id, data);
  105. native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
  106. native Streamer_GetArrayData(type, {Text3D,_}:id, data, dest[], maxlength = sizeof dest);
  107. native Streamer_SetArrayData(type, {Text3D,_}:id, data, const src[], maxlength = sizeof src);
  108. native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
  109. native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
  110. native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
  111. native Streamer_GetUpperBound(type);
  112. // Natives (Miscellaneous)
  113. native Streamer_GetDistanceToItem(Float:x, Float:y, Float:z, type, {Text3D,_}:id, &Float:distance);
  114. native Streamer_IsItemVisible(playerid, type, {Text3D,_}:id);
  115. native Streamer_DestroyAllVisibleItems(playerid, type);
  116. native Streamer_CountVisibleItems(playerid, type);
  117. // Natives (Objects)
  118. 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);
  119. native DestroyDynamicObject(objectid);
  120. native IsValidDynamicObject(objectid);
  121. native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
  122. native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z);
  123. native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz);
  124. native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz);
  125. native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed, Float:rx = -1000.0, Float:ry = -1000.0, Float:rz = -1000.0);
  126. native StopDynamicObject(objectid);
  127. native IsDynamicObjectMoving(objectid);
  128. native AttachCameraToDynamicObject(playerid, objectid);
  129. native AttachDynamicObjectToVehicle(objectid, vehicleid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz);
  130. native EditDynamicObject(playerid, objectid);
  131. native GetDynamicObjectMaterial(objectid, materialindex, &modelid, txdname[], texturename[], &materialcolor, maxtxdname = sizeof txdname, maxtexturename = sizeof texturename);
  132. native SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0);
  133. native GetDynamicObjectMaterialText(objectid, materialindex, text[], &materialsize, fontface[], &fontsize, &bold, &fontcolor, &backcolor, &textalignment, maxtext = sizeof text, maxfontface = sizeof fontface);
  134. native SetDynamicObjectMaterialText(objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
  135. native DestroyAllDynamicObjects();
  136. native CountDynamicObjects();
  137. // Natives (Pickups)
  138. native CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  139. native DestroyDynamicPickup(pickupid);
  140. native IsValidDynamicPickup(pickupid);
  141. native DestroyAllDynamicPickups();
  142. native CountDynamicPickups();
  143. // Natives (Checkpoints)
  144. native CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  145. native DestroyDynamicCP(checkpointid);
  146. native IsValidDynamicCP(checkpointid);
  147. native TogglePlayerDynamicCP(playerid, checkpointid, toggle);
  148. native TogglePlayerAllDynamicCPs(playerid, toggle);
  149. native IsPlayerInDynamicCP(playerid, checkpointid);
  150. native GetPlayerVisibleDynamicCP(playerid);
  151. native DestroyAllDynamicCPs();
  152. native CountDynamicCPs();
  153. // Natives (Race Checkpoints)
  154. 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);
  155. native DestroyDynamicRaceCP(checkpointid);
  156. native IsValidDynamicRaceCP(checkpointid);
  157. native TogglePlayerDynamicRaceCP(playerid, checkpointid, toggle);
  158. native TogglePlayerAllDynamicRaceCPs(playerid, toggle);
  159. native IsPlayerInDynamicRaceCP(playerid, checkpointid);
  160. native GetPlayerVisibleDynamicRaceCP(playerid);
  161. native DestroyAllDynamicRaceCPs();
  162. native CountDynamicRaceCPs();
  163. // Natives (Map Icons)
  164. native CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
  165. native DestroyDynamicMapIcon(iconid);
  166. native IsValidDynamicMapIcon(iconid);
  167. native DestroyAllDynamicMapIcons();
  168. native CountDynamicMapIcons();
  169. // Natives (3D Text Labels)
  170. 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);
  171. native DestroyDynamic3DTextLabel(Text3D:id);
  172. native IsValidDynamic3DTextLabel(Text3D:id);
  173. native GetDynamic3DTextLabelText(Text3D:id, text[], maxlength = sizeof text);
  174. native UpdateDynamic3DTextLabelText(Text3D:id, color, const text[]);
  175. native DestroyAllDynamic3DTextLabels();
  176. native CountDynamic3DTextLabels();
  177. // Natives (Areas)
  178. native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  179. native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
  180. native CreateDynamicSphere(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  181. native CreateDynamicCube(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worldid = -1, interiorid = -1, playerid = -1);
  182. native CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1);
  183. native DestroyDynamicArea(areaid);
  184. native IsValidDynamicArea(areaid);
  185. native TogglePlayerDynamicArea(playerid, areaid, toggle);
  186. native TogglePlayerAllDynamicAreas(playerid, toggle);
  187. native IsPlayerInDynamicArea(playerid, areaid);
  188. native IsPlayerInAnyDynamicArea(playerid);
  189. native IsPointInDynamicArea(areaid, Float:x, Float:y, Float:z);
  190. native IsPointInAnyDynamicArea(Float:x, Float:y, Float:z);
  191. native AttachDynamicAreaToObject(areaid, objectid, type = STREAMER_OBJECT_TYPE_DYNAMIC, playerid = INVALID_PLAYER_ID);
  192. native AttachDynamicAreaToPlayer(areaid, playerid);
  193. native AttachDynamicAreaToVehicle(areaid, vehicleid);
  194. native DestroyAllDynamicAreas();
  195. native CountDynamicAreas();
  196. // Natives (Extended)
  197. 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);
  198. 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);
  199. 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);
  200. 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);
  201. 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);
  202. 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);
  203. native CreateDynamicCircleEx(Float:x, Float:y, Float:size, worlds[] = { -1 }, interiors[] = { -1 }, players[] = { -1 }, maxworlds = sizeof worlds, maxinteriors = sizeof interiors, maxplayers = sizeof players);
  204. 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);
  205. 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);
  206. 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);
  207. 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);
  208. // Natives (Internal)
  209. native Streamer_CallbackHook(callback, {Float,_}:...);
  210. // Callbacks
  211. forward OnDynamicObjectMoved(objectid);
  212. forward OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
  213. forward OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z);
  214. forward OnPlayerPickUpDynamicPickup(playerid, pickupid);
  215. forward OnPlayerEnterDynamicCP(playerid, checkpointid);
  216. forward OnPlayerLeaveDynamicCP(playerid, checkpointid);
  217. forward OnPlayerEnterDynamicRaceCP(playerid, checkpointid);
  218. forward OnPlayerLeaveDynamicRaceCP(playerid, checkpointid);
  219. forward OnPlayerEnterDynamicArea(playerid, areaid);
  220. forward OnPlayerLeaveDynamicArea(playerid, areaid);
  221. // Callback Hook Section
  222. #define STREAMER_OPC (0)
  223. #define STREAMER_OPDC (1)
  224. #define STREAMER_OPEO (2)
  225. #define STREAMER_OPSO (3)
  226. #define STREAMER_OPPP (4)
  227. #define STREAMER_OPEC (5)
  228. #define STREAMER_OPLC (6)
  229. #define STREAMER_OPERC (7)
  230. #define STREAMER_OPLRC (8)
  231. public OnPlayerConnect(playerid)
  232. {
  233. Streamer_CallbackHook(STREAMER_OPC, playerid);
  234. #if defined Streamer_OnPlayerConnect
  235. return Streamer_OnPlayerConnect(playerid);
  236. #else
  237. return 1;
  238. #endif
  239. }
  240. #if defined Streamer_OnPlayerConnect
  241. forward Streamer_OnPlayerConnect(playerid);
  242. #endif
  243. #if defined _ALS_OnPlayerConnect
  244. #undef OnPlayerConnect
  245. #else
  246. #define _ALS_OnPlayerConnect
  247. #endif
  248. #define OnPlayerConnect Streamer_OnPlayerConnect
  249. public OnPlayerDisconnect(playerid, reason)
  250. {
  251. Streamer_CallbackHook(STREAMER_OPDC, playerid, reason);
  252. #if defined Streamer_OnPlayerDisconnect
  253. return Streamer_OnPlayerDisconnect(playerid, reason);
  254. #else
  255. return 1;
  256. #endif
  257. }
  258. #if defined Streamer_OnPlayerDisconnect
  259. forward Streamer_OnPlayerDisconnect(playerid, reason);
  260. #endif
  261. #if defined _ALS_OnPlayerDisconnect
  262. #undef OnPlayerDisconnect
  263. #else
  264. #define _ALS_OnPlayerDisconnect
  265. #endif
  266. #define OnPlayerDisconnect Streamer_OnPlayerDisconnect
  267. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  268. {
  269. if (playerobject)
  270. {
  271. Streamer_CallbackHook(STREAMER_OPEO, playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
  272. }
  273. #if defined Streamer_OnPlayerEditObject
  274. return Streamer_OnPlayerEditObject(playerid, playerobject, objectid, response, fX, fY, fZ, fRotX, fRotY, fRotZ);
  275. #else
  276. return 1;
  277. #endif
  278. }
  279. #if defined Streamer_OnPlayerEditObject
  280. forward Streamer_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  281. #endif
  282. #if defined _ALS_OnPlayerEditObject
  283. #undef OnPlayerEditObject
  284. #else
  285. #define _ALS_OnPlayerEditObject
  286. #endif
  287. #define OnPlayerEditObject Streamer_OnPlayerEditObject
  288. public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
  289. {
  290. if (type == SELECT_OBJECT_PLAYER_OBJECT)
  291. {
  292. Streamer_CallbackHook(STREAMER_OPSO, playerid, type, objectid, modelid, fX, fY, fZ);
  293. }
  294. #if defined Streamer_OnPlayerSelectObject
  295. return Streamer_OnPlayerSelectObject(playerid, type, objectid, modelid, fX, fY, fZ);
  296. #else
  297. return 1;
  298. #endif
  299. }
  300. #if defined Streamer_OnPlayerSelectObject
  301. forward Streamer_OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
  302. #endif
  303. #if defined _ALS_OnPlayerSelectObject
  304. #undef OnPlayerSelectObject
  305. #else
  306. #define _ALS_OnPlayerSelectObject
  307. #endif
  308. #define OnPlayerSelectObject Streamer_OnPlayerSelectObject
  309. public OnPlayerPickUpPickup(playerid, pickupid)
  310. {
  311. Streamer_CallbackHook(STREAMER_OPPP, playerid, pickupid);
  312. #if defined Streamer_OnPlayerPickUpPickup
  313. return Streamer_OnPlayerPickUpPickup(playerid, pickupid);
  314. #else
  315. return 1;
  316. #endif
  317. }
  318. #if defined Streamer_OnPlayerPickUpPickup
  319. forward Streamer_OnPlayerPickUpPickup(playerid, pickupid);
  320. #endif
  321. #if defined _ALS_OnPlayerPickUpPickup
  322. #undef OnPlayerPickUpPickup
  323. #else
  324. #define _ALS_OnPlayerPickUpPickup
  325. #endif
  326. #define OnPlayerPickUpPickup Streamer_OnPlayerPickUpPickup
  327. public OnPlayerEnterCheckpoint(playerid)
  328. {
  329. Streamer_CallbackHook(STREAMER_OPEC, playerid);
  330. #if defined Streamer_OnPlayerEnterCP
  331. return Streamer_OnPlayerEnterCP(playerid);
  332. #else
  333. return 1;
  334. #endif
  335. }
  336. #if defined Streamer_OnPlayerEnterCP
  337. forward Streamer_OnPlayerEnterCP(playerid);
  338. #endif
  339. #if defined _ALS_OnPlayerEnterCheckpoint
  340. #undef OnPlayerEnterCheckpoint
  341. #else
  342. #define _ALS_OnPlayerEnterCheckpoint
  343. #endif
  344. #define OnPlayerEnterCheckpoint Streamer_OnPlayerEnterCP
  345. public OnPlayerLeaveCheckpoint(playerid)
  346. {
  347. Streamer_CallbackHook(STREAMER_OPLC, playerid);
  348. #if defined Streamer_OnPlayerLeaveCP
  349. return Streamer_OnPlayerLeaveCP(playerid);
  350. #else
  351. return 1;
  352. #endif
  353. }
  354. #if defined Streamer_OnPlayerLeaveCP
  355. forward Streamer_OnPlayerLeaveCP(playerid);
  356. #endif
  357. #if defined _ALS_OnPlayerLeaveCheckpoint
  358. #undef OnPlayerLeaveCheckpoint
  359. #else
  360. #define _ALS_OnPlayerLeaveCheckpoint
  361. #endif
  362. #define OnPlayerLeaveCheckpoint Streamer_OnPlayerLeaveCP
  363. public OnPlayerEnterRaceCheckpoint(playerid)
  364. {
  365. Streamer_CallbackHook(STREAMER_OPERC, playerid);
  366. #if defined Streamer_OnPlayerEnterRaceCP
  367. return Streamer_OnPlayerEnterRaceCP(playerid);
  368. #else
  369. return 1;
  370. #endif
  371. }
  372. #if defined Streamer_OnPlayerEnterRaceCP
  373. forward Streamer_OnPlayerEnterRaceCP(playerid);
  374. #endif
  375. #if defined _ALS_OnPlayerEnterRaceCP
  376. #undef OnPlayerEnterRaceCheckpoint
  377. #else
  378. #define _ALS_OnPlayerEnterRaceCP
  379. #endif
  380. #define OnPlayerEnterRaceCheckpoint Streamer_OnPlayerEnterRaceCP
  381. public OnPlayerLeaveRaceCheckpoint(playerid)
  382. {
  383. Streamer_CallbackHook(STREAMER_OPLRC, playerid);
  384. #if defined Streamer_OnPlayerLeaveRaceCP
  385. return Streamer_OnPlayerLeaveRaceCP(playerid);
  386. #else
  387. return 1;
  388. #endif
  389. }
  390. #if defined Streamer_OnPlayerLeaveRaceCP
  391. forward Streamer_OnPlayerLeaveRaceCP(playerid);
  392. #endif
  393. #if defined _ALS_OnPlayerLeaveRaceCP
  394. #undef OnPlayerLeaveRaceCheckpoint
  395. #else
  396. #define _ALS_OnPlayerLeaveRaceCP
  397. #endif
  398. #define OnPlayerLeaveRaceCheckpoint Streamer_OnPlayerLeaveRaceCP