Advertisement
MaGnO_357

# Include Streamer

Aug 15th, 2011
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.81 KB | None | 0 0
  1. /*
  2. SA-MP Streamer Plugin v2.5.1
  3. Copyright © 2010 Incognito
  4.  
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18.  
  19. #if defined _streamer_included
  20. #endinput
  21. #endif
  22. #define _streamer_included
  23.  
  24. #include <a_samp>
  25.  
  26. // Definitions
  27.  
  28. #define STREAMER_TYPE_OBJECT (0)
  29. #define STREAMER_TYPE_PICKUP (1)
  30. #define STREAMER_TYPE_CP (2)
  31. #define STREAMER_TYPE_RACE_CP (3)
  32. #define STREAMER_TYPE_MAP_ICON (4)
  33. #define STREAMER_TYPE_3D_TEXT_LABEL (5)
  34. #define STREAMER_TYPE_AREA (6)
  35.  
  36. // Enumerator
  37.  
  38. enum
  39. {
  40. E_STREAMER_ATTACHED_PLAYER,
  41. E_STREAMER_ATTACHED_VEHICLE,
  42. E_STREAMER_COLOR,
  43. E_STREAMER_DISTANCE,
  44. E_STREAMER_DRAW_DISTANCE,
  45. E_STREAMER_EXTRA_ID,
  46. E_STREAMER_INTERIOR_ID,
  47. E_STREAMER_MAX_X,
  48. E_STREAMER_MAX_Y,
  49. E_STREAMER_MAX_Z,
  50. E_STREAMER_MIN_X,
  51. E_STREAMER_MIN_Y,
  52. E_STREAMER_MIN_Z,
  53. E_STREAMER_MODEL_ID,
  54. E_STREAMER_MOVE_SPEED,
  55. E_STREAMER_MOVE_X,
  56. E_STREAMER_MOVE_Y,
  57. E_STREAMER_MOVE_Z,
  58. E_STREAMER_NEXT_X,
  59. E_STREAMER_NEXT_Y,
  60. E_STREAMER_NEXT_Z,
  61. E_STREAMER_PLAYER_ID,
  62. E_STREAMER_R_X,
  63. E_STREAMER_R_Y,
  64. E_STREAMER_R_Z,
  65. E_STREAMER_SIZE,
  66. E_STREAMER_TEST_LOS,
  67. E_STREAMER_TYPE,
  68. E_STREAMER_WORLD_ID,
  69. E_STREAMER_X,
  70. E_STREAMER_Y,
  71. E_STREAMER_Z
  72. }
  73.  
  74. // Natives (Settings)
  75.  
  76. native Streamer_TickRate(rate);
  77. native Streamer_MaxItems(type, items);
  78. native Streamer_VisibleItems(type, items);
  79. native Streamer_CellDistance(Float:distance);
  80. native Streamer_CellSize(Float:size);
  81.  
  82. // Natives (Updates)
  83.  
  84. native Streamer_Update(playerid);
  85. native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z);
  86.  
  87. // Natives (Data Manipulation)
  88.  
  89. native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
  90. native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
  91. native Streamer_GetIntData(type, {Text3D,_}:id, data);
  92. native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
  93. native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
  94. native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
  95. native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
  96. native Streamer_GetUpperBound(type);
  97.  
  98. // Natives (Miscellaneous)
  99.  
  100. native Streamer_IsItemVisible(playerid, type, {Text3D,_}:id);
  101. native Streamer_DestroyAllVisibleItems(playerid, type);
  102. native Streamer_CountVisibleItems(playerid, type);
  103.  
  104. // Natives (Objects)
  105.  
  106. native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 200.0);
  107. native DestroyDynamicObject(objectid);
  108. native IsValidDynamicObject(objectid);
  109. native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
  110. native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z);
  111. native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz);
  112. native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz);
  113. native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed);
  114. native StopDynamicObject(objectid);
  115. native DestroyAllDynamicObjects();
  116. native CountDynamicObjects();
  117.  
  118. // Natives (Pickups)
  119.  
  120. native CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  121. native DestroyDynamicPickup(pickupid);
  122. native IsValidDynamicPickup(pickupid);
  123. native DestroyAllDynamicPickups();
  124. native CountDynamicPickups();
  125.  
  126. // Natives (Checkpoints)
  127.  
  128. native CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  129. native DestroyDynamicCP(checkpointid);
  130. native IsValidDynamicCP(checkpointid);
  131. native TogglePlayerDynamicCP(playerid, checkpointid, toggle);
  132. native TogglePlayerAllDynamicCPs(playerid, toggle);
  133. native IsPlayerInDynamicCP(playerid, checkpointid);
  134. native DestroyAllDynamicCPs();
  135. native CountDynamicCPs();
  136.  
  137. // Natives (Race Checkpoints)
  138.  
  139. native CreateDynamicRaceCP(type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  140. native DestroyDynamicRaceCP(checkpointid);
  141. native IsValidDynamicRaceCP(checkpointid);
  142. native TogglePlayerDynamicRaceCP(playerid, checkpointid, toggle);
  143. native TogglePlayerAllDynamicRaceCPs(playerid, toggle);
  144. native IsPlayerInDynamicRaceCP(playerid, checkpointid);
  145. native DestroyAllDynamicRaceCPs();
  146. native CountDynamicRaceCPs();
  147.  
  148. // Natives (Map Icons)
  149.  
  150. native CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  151. native DestroyDynamicMapIcon(iconid);
  152. native IsValidDynamicMapIcon(iconid);
  153. native DestroyAllDynamicMapIcons();
  154. native CountDynamicMapIcons();
  155.  
  156. // Natives (3D Text Labels)
  157.  
  158. 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:distance = 100.0);
  159. native DestroyDynamic3DTextLabel(Text3D:id);
  160. native IsValidDynamic3DTextLabel(Text3D:id);
  161. native UpdateDynamic3DTextLabelText(Text3D:id, color, const text[]);
  162. native DestroyAllDynamic3DTextLabels();
  163. native CountDynamic3DTextLabels();
  164.  
  165. // Natives (Areas)
  166.  
  167. native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  168. native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
  169. native CreateDynamicSphere(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  170. native CreateDynamicCube(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worldid = -1, interiorid = -1, playerid = -1);
  171. native DestroyDynamicArea(areaid);
  172. native IsValidDynamicArea(areaid);
  173. native TogglePlayerDynamicArea(playerid, areaid, toggle);
  174. native TogglePlayerAllDynamicAreas(playerid, toggle);
  175. native IsPlayerInDynamicArea(playerid, areaid);
  176. native AttachDynamicAreaToPlayer(areaid, playerid);
  177. native AttachDynamicAreaToVehicle(areaid, vehicleid);
  178. native DestroyAllDynamicAreas();
  179. native CountDynamicAreas();
  180.  
  181. // Natives (Internals)
  182.  
  183. native Streamer_AddPlayer(playerid);
  184. native Streamer_RemovePlayer(playerid);
  185. native Streamer_VerifyPickup(playerid, pickupid);
  186. native Streamer_VerifyCheckpoint(playerid, type, status);
  187. native Streamer_RegisterInterface();
  188.  
  189. // Callbacks
  190.  
  191. forward OnDynamicObjectMoved(objectid);
  192. forward OnPlayerPickUpDynamicPickup(playerid, pickupid);
  193. forward OnPlayerEnterDynamicCP(playerid, checkpointid);
  194. forward OnPlayerLeaveDynamicCP(playerid, checkpointid);
  195. forward OnPlayerEnterDynamicRaceCP(playerid, checkpointid);
  196. forward OnPlayerLeaveDynamicRaceCP(playerid, checkpointid);
  197. forward OnPlayerEnterDynamicArea(playerid, areaid);
  198. forward OnPlayerLeaveDynamicArea(playerid, areaid);
  199.  
  200. // Callback Hook Section
  201.  
  202. static bool:Streamer_g_OPC = false;
  203. static bool:Streamer_g_OPDC = false;
  204. static bool:Streamer_g_OPPP = false;
  205. static bool:Streamer_g_OPEC = false;
  206. static bool:Streamer_g_OPLC = false;
  207. static bool:Streamer_g_OPERC = false;
  208. static bool:Streamer_g_OPLRC = false;
  209. static bool:Streamer_g_RI = false;
  210.  
  211. public OnFilterScriptInit()
  212. {
  213. if (!Streamer_g_RI)
  214. {
  215. Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
  216. Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
  217. Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
  218. Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
  219. Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
  220. Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
  221. Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
  222. Streamer_g_RI = true;
  223. Streamer_RegisterInterface();
  224. }
  225. if (funcidx("Streamer_OnFilterScriptInit") != -1)
  226. {
  227. return CallLocalFunction("Streamer_OnFilterScriptInit", "");
  228. }
  229. return 1;
  230. }
  231.  
  232. #if defined _ALS_OnFilterScriptInit
  233. #undef OnFilterScriptInit
  234. #else
  235. #define _ALS_OnFilterScriptInit
  236. #endif
  237. #define OnFilterScriptInit Streamer_OnFilterScriptInit
  238.  
  239. forward Streamer_OnFilterScriptInit();
  240.  
  241. public OnGameModeInit()
  242. {
  243. if (!Streamer_g_RI)
  244. {
  245. Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
  246. Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
  247. Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
  248. Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
  249. Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
  250. Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
  251. Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
  252. Streamer_g_RI = true;
  253. Streamer_RegisterInterface();
  254. }
  255. if (funcidx("Streamer_OnGameModeInit") != -1)
  256. {
  257. return CallLocalFunction("Streamer_OnGameModeInit", "");
  258. }
  259. return 1;
  260. }
  261.  
  262. #if defined _ALS_OnGameModeInit
  263. #undef OnGameModeInit
  264. #else
  265. #define _ALS_OnGameModeInit
  266. #endif
  267. #define OnGameModeInit Streamer_OnGameModeInit
  268.  
  269. forward Streamer_OnGameModeInit();
  270.  
  271. public OnPlayerConnect(playerid)
  272. {
  273. if (!IsPlayerNPC(playerid))
  274. {
  275. Streamer_AddPlayer(playerid);
  276. }
  277. if (Streamer_g_OPC)
  278. {
  279. return CallLocalFunction("Streamer_OnPlayerConnect", "d", playerid);
  280. }
  281. return 1;
  282. }
  283.  
  284. #if defined _ALS_OnPlayerConnect
  285. #undef OnPlayerConnect
  286. #else
  287. #define _ALS_OnPlayerConnect
  288. #endif
  289. #define OnPlayerConnect Streamer_OnPlayerConnect
  290.  
  291. forward Streamer_OnPlayerConnect(playerid);
  292.  
  293. public OnPlayerDisconnect(playerid, reason)
  294. {
  295. if (!IsPlayerNPC(playerid))
  296. {
  297. Streamer_RemovePlayer(playerid);
  298. }
  299. if (Streamer_g_OPDC)
  300. {
  301. return CallLocalFunction("Streamer_OnPlayerDisconnect", "dd", playerid, reason);
  302. }
  303. return 1;
  304. }
  305.  
  306. #if defined _ALS_OnPlayerDisconnect
  307. #undef OnPlayerDisconnect
  308. #else
  309. #define _ALS_OnPlayerDisconnect
  310. #endif
  311. #define OnPlayerDisconnect Streamer_OnPlayerDisconnect
  312.  
  313. forward Streamer_OnPlayerDisconnect(playerid, reason);
  314.  
  315. public OnPlayerPickUpPickup(playerid, pickupid)
  316. {
  317. if (!IsPlayerNPC(playerid))
  318. {
  319. Streamer_VerifyPickup(playerid, pickupid);
  320. }
  321. if (Streamer_g_OPPP)
  322. {
  323. return CallLocalFunction("Streamer_OnPlayerPickUpPickup", "dd", playerid, pickupid);
  324. }
  325. return 1;
  326. }
  327.  
  328. #if defined _ALS_OnPlayerPickUpPickup
  329. #undef OnPlayerPickUpPickup
  330. #else
  331. #define _ALS_OnPlayerPickUpPickup
  332. #endif
  333. #define OnPlayerPickUpPickup Streamer_OnPlayerPickUpPickup
  334.  
  335. forward Streamer_OnPlayerPickUpPickup(playerid, pickupid);
  336.  
  337. public OnPlayerEnterCheckpoint(playerid)
  338. {
  339. if (!IsPlayerNPC(playerid))
  340. {
  341. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_CP, 0);
  342. }
  343. if (Streamer_g_OPEC)
  344. {
  345. return CallLocalFunction("Streamer_OnPlayerEnterCP", "d", playerid);
  346. }
  347. return 1;
  348. }
  349.  
  350. #if defined _ALS_OnPlayerEnterCheckpoint
  351. #undef OnPlayerEnterCheckpoint
  352. #else
  353. #define _ALS_OnPlayerEnterCheckpoint
  354. #endif
  355. #define OnPlayerEnterCheckpoint Streamer_OnPlayerEnterCP
  356.  
  357. forward Streamer_OnPlayerEnterCP(playerid);
  358.  
  359. public OnPlayerLeaveCheckpoint(playerid)
  360. {
  361. if (!IsPlayerNPC(playerid))
  362. {
  363. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_CP, 1);
  364. }
  365. if (Streamer_g_OPLC)
  366. {
  367. return CallLocalFunction("Streamer_OnPlayerLeaveCP", "d", playerid);
  368. }
  369. return 1;
  370. }
  371.  
  372. #if defined _ALS_OnPlayerLeaveCheckpoint
  373. #undef OnPlayerLeaveCheckpoint
  374. #else
  375. #define _ALS_OnPlayerLeaveCheckpoint
  376. #endif
  377. #define OnPlayerLeaveCheckpoint Streamer_OnPlayerLeaveCP
  378.  
  379. forward Streamer_OnPlayerLeaveCP(playerid);
  380.  
  381. public OnPlayerEnterRaceCheckpoint(playerid)
  382. {
  383. if (!IsPlayerNPC(playerid))
  384. {
  385. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_RACE_CP, 0);
  386. }
  387. if (Streamer_g_OPERC)
  388. {
  389. return CallLocalFunction("Streamer_OnPlayerEnterRaceCP", "d", playerid);
  390. }
  391. return 1;
  392. }
  393.  
  394. #if defined _ALS_OnPlayerEnterRaceCP
  395. #undef OnPlayerEnterRaceCheckpoint
  396. #else
  397. #define _ALS_OnPlayerEnterRaceCP
  398. #endif
  399. #define OnPlayerEnterRaceCheckpoint Streamer_OnPlayerEnterRaceCP
  400.  
  401. forward Streamer_OnPlayerEnterRaceCP(playerid);
  402.  
  403. public OnPlayerLeaveRaceCheckpoint(playerid)
  404. {
  405. if (!IsPlayerNPC(playerid))
  406. {
  407. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_RACE_CP, 1);
  408. }
  409. if (Streamer_g_OPLRC)
  410. {
  411. return CallLocalFunction("Streamer_OnPlayerLeaveRaceCP", "d", playerid);
  412. }
  413. return 1;
  414. }
  415.  
  416. #if defined _ALS_OnPlayerLeaveRaceCP
  417. #undef OnPlayerLeaveRaceCheckpoint
  418. #else
  419. #define _ALS_OnPlayerLeaveRaceCP
  420. #endif
  421. #define OnPlayerLeaveRaceCheckpoint Streamer_OnPlayerLeaveRaceCP
  422.  
  423. forward Streamer_OnPlayerLeaveRaceCP(playerid);
  424.  
  425. // PAWN Invoke Section
  426.  
  427. forward Streamer_PublicFunction();
  428.  
  429. public Streamer_PublicFunction()
  430. {
  431. new Float:value;
  432. CreatePickup(0, 0, 0.0, 0.0, 0.0, 0);
  433. CreatePlayer3DTextLabel(0, "", 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0);
  434. CreatePlayerObject(0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  435. DeletePlayer3DTextLabel(0, PlayerText3D:0);
  436. DestroyPickup(0);
  437. DestroyPlayerObject(0, 0);
  438. DisablePlayerCheckpoint(0);
  439. DisablePlayerRaceCheckpoint(0);
  440. GetPlayerInterior(0);
  441. GetPlayerPos(0, value, value, value);
  442. GetPlayerState(0);
  443. GetPlayerVirtualWorld(0);
  444. GetVehiclePos(0, value, value, value);
  445. MovePlayerObject(0, 0, 0.0, 0.0, 0.0, 0.0);
  446. RemovePlayerMapIcon(0, 0);
  447. SetPlayerCheckpoint(0, 0.0, 0.0, 0.0, 0.0);
  448. SetPlayerMapIcon(0, 0, 0.0, 0.0, 0.0, 0, 0);
  449. SetPlayerObjectPos(0, 0, 0.0, 0.0, 0.0);
  450. SetPlayerObjectRot(0, 0, 0.0, 0.0, 0.0);
  451. SetPlayerRaceCheckpoint(0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  452. StopPlayerObject(0, 0);
  453. UpdatePlayer3DTextLabelText(0, PlayerText3D:0, 0, "");
  454. return 1;
  455. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement