Guest User

Untitled

a guest
Aug 15th, 2013
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.84 KB | None | 0 0
  1. /*
  2. SA-MP Streamer Plugin v2.5.2
  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_STYLE,
  67. E_STREAMER_TEST_LOS,
  68. E_STREAMER_TYPE,
  69. E_STREAMER_WORLD_ID,
  70. E_STREAMER_X,
  71. E_STREAMER_Y,
  72. E_STREAMER_Z
  73. }
  74.  
  75. // Natives (Settings)
  76.  
  77. native Streamer_TickRate(rate);
  78. native Streamer_MaxItems(type, items);
  79. native Streamer_VisibleItems(type, items);
  80. native Streamer_CellDistance(Float:distance);
  81. native Streamer_CellSize(Float:size);
  82.  
  83. // Natives (Updates)
  84.  
  85. native Streamer_Update(playerid);
  86. native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z);
  87.  
  88. // Natives (Data Manipulation)
  89.  
  90. native Streamer_GetFloatData(type, {Text3D,_}:id, data, &Float:result);
  91. native Streamer_SetFloatData(type, {Text3D,_}:id, data, Float:value);
  92. native Streamer_GetIntData(type, {Text3D,_}:id, data);
  93. native Streamer_SetIntData(type, {Text3D,_}:id, data, value);
  94. native Streamer_IsInArrayData(type, {Text3D,_}:id, data, value);
  95. native Streamer_AppendArrayData(type, {Text3D,_}:id, data, value);
  96. native Streamer_RemoveArrayData(type, {Text3D,_}:id, data, value);
  97. native Streamer_GetUpperBound(type);
  98.  
  99. // Natives (Miscellaneous)
  100.  
  101. native Streamer_IsItemVisible(playerid, type, {Text3D,_}:id);
  102. native Streamer_DestroyAllVisibleItems(playerid, type);
  103. native Streamer_CountVisibleItems(playerid, type);
  104.  
  105. // Natives (Objects)
  106.  
  107. 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);
  108. native DestroyDynamicObject(objectid);
  109. native IsValidDynamicObject(objectid);
  110. native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
  111. native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z);
  112. native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz);
  113. native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz);
  114. native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed);
  115. native StopDynamicObject(objectid);
  116. native DestroyAllDynamicObjects();
  117. native CountDynamicObjects();
  118.  
  119. // Natives (Pickups)
  120.  
  121. native CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  122. native DestroyDynamicPickup(pickupid);
  123. native IsValidDynamicPickup(pickupid);
  124. native DestroyAllDynamicPickups();
  125. native CountDynamicPickups();
  126.  
  127. // Natives (Checkpoints)
  128.  
  129. native CreateDynamicCP(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  130. native DestroyDynamicCP(checkpointid);
  131. native IsValidDynamicCP(checkpointid);
  132. native TogglePlayerDynamicCP(playerid, checkpointid, toggle);
  133. native TogglePlayerAllDynamicCPs(playerid, toggle);
  134. native IsPlayerInDynamicCP(playerid, checkpointid);
  135. native DestroyAllDynamicCPs();
  136. native CountDynamicCPs();
  137.  
  138. // Natives (Race Checkpoints)
  139.  
  140. 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);
  141. native DestroyDynamicRaceCP(checkpointid);
  142. native IsValidDynamicRaceCP(checkpointid);
  143. native TogglePlayerDynamicRaceCP(playerid, checkpointid, toggle);
  144. native TogglePlayerAllDynamicRaceCPs(playerid, toggle);
  145. native IsPlayerInDynamicRaceCP(playerid, checkpointid);
  146. native DestroyAllDynamicRaceCPs();
  147. native CountDynamicRaceCPs();
  148.  
  149. // Natives (Map Icons)
  150.  
  151. native CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);
  152. native DestroyDynamicMapIcon(iconid);
  153. native IsValidDynamicMapIcon(iconid);
  154. native DestroyAllDynamicMapIcons();
  155. native CountDynamicMapIcons();
  156.  
  157. // Natives (3D Text Labels)
  158.  
  159. 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);
  160. native DestroyDynamic3DTextLabel(Text3D:id);
  161. native IsValidDynamic3DTextLabel(Text3D:id);
  162. native UpdateDynamic3DTextLabelText(Text3D:id, color, const text[]);
  163. native DestroyAllDynamic3DTextLabels();
  164. native CountDynamic3DTextLabels();
  165.  
  166. // Natives (Areas)
  167.  
  168. native CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  169. native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);
  170. native CreateDynamicSphere(Float:x, Float:y, Float:z, Float:size, worldid = -1, interiorid = -1, playerid = -1);
  171. native CreateDynamicCube(Float:minx, Float:miny, Float:minz, Float:maxx, Float:maxy, Float:maxz, worldid = -1, interiorid = -1, playerid = -1);
  172. native DestroyDynamicArea(areaid);
  173. native IsValidDynamicArea(areaid);
  174. native TogglePlayerDynamicArea(playerid, areaid, toggle);
  175. native TogglePlayerAllDynamicAreas(playerid, toggle);
  176. native IsPlayerInDynamicArea(playerid, areaid);
  177. native AttachDynamicAreaToPlayer(areaid, playerid);
  178. native AttachDynamicAreaToVehicle(areaid, vehicleid);
  179. native DestroyAllDynamicAreas();
  180. native CountDynamicAreas();
  181.  
  182. // Natives (Internals)
  183.  
  184. native Streamer_AddPlayer(playerid);
  185. native Streamer_RemovePlayer(playerid);
  186. native Streamer_VerifyPickup(playerid, pickupid);
  187. native Streamer_VerifyCheckpoint(playerid, type, status);
  188. native Streamer_RegisterInterface();
  189.  
  190. // Callbacks
  191.  
  192. forward OnDynamicObjectMoved(objectid);
  193. forward OnPlayerPickUpDynamicPickup(playerid, pickupid);
  194. forward OnPlayerEnterDynamicCP(playerid, checkpointid);
  195. forward OnPlayerLeaveDynamicCP(playerid, checkpointid);
  196. forward OnPlayerEnterDynamicRaceCP(playerid, checkpointid);
  197. forward OnPlayerLeaveDynamicRaceCP(playerid, checkpointid);
  198. forward OnPlayerEnterDynamicArea(playerid, areaid);
  199. forward OnPlayerLeaveDynamicArea(playerid, areaid);
  200.  
  201. // Callback Hook Section
  202.  
  203. static bool:Streamer_g_OPC = false;
  204. static bool:Streamer_g_OPDC = false;
  205. static bool:Streamer_g_OPPP = false;
  206. static bool:Streamer_g_OPEC = false;
  207. static bool:Streamer_g_OPLC = false;
  208. static bool:Streamer_g_OPERC = false;
  209. static bool:Streamer_g_OPLRC = false;
  210. static bool:Streamer_g_RI = false;
  211.  
  212. public OnFilterScriptInit()
  213. {
  214. if (!Streamer_g_RI)
  215. {
  216. Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
  217. Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
  218. Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
  219. Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
  220. Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
  221. Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
  222. Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
  223. Streamer_g_RI = true;
  224. Streamer_RegisterInterface();
  225. }
  226. if (funcidx("Streamer_OnFilterScriptInit") != -1)
  227. {
  228. return CallLocalFunction("Streamer_OnFilterScriptInit", "");
  229. }
  230. return 1;
  231. }
  232.  
  233. #if defined _ALS_OnFilterScriptInit
  234. #undef OnFilterScriptInit
  235. #else
  236. #define _ALS_OnFilterScriptInit
  237. #endif
  238. #define OnFilterScriptInit Streamer_OnFilterScriptInit
  239.  
  240. forward Streamer_OnFilterScriptInit();
  241.  
  242. public OnGameModeInit()
  243. {
  244. if (!Streamer_g_RI)
  245. {
  246. Streamer_g_OPC = funcidx("Streamer_OnPlayerConnect") != -1;
  247. Streamer_g_OPDC = funcidx("Streamer_OnPlayerDisconnect") != -1;
  248. Streamer_g_OPPP = funcidx("Streamer_OnPlayerPickUpPickup") != -1;
  249. Streamer_g_OPEC = funcidx("Streamer_OnPlayerEnterCP") != -1;
  250. Streamer_g_OPLC = funcidx("Streamer_OnPlayerLeaveCP") != -1;
  251. Streamer_g_OPERC = funcidx("Streamer_OnPlayerEnterRaceCP") != -1;
  252. Streamer_g_OPLRC = funcidx("Streamer_OnPlayerLeaveRaceCP") != -1;
  253. Streamer_g_RI = true;
  254. Streamer_RegisterInterface();
  255. }
  256. if (funcidx("Streamer_OnGameModeInit") != -1)
  257. {
  258. return CallLocalFunction("Streamer_OnGameModeInit", "");
  259. }
  260. return 1;
  261. }
  262.  
  263. #if defined _ALS_OnGameModeInit
  264. #undef OnGameModeInit
  265. #else
  266. #define _ALS_OnGameModeInit
  267. #endif
  268. #define OnGameModeInit Streamer_OnGameModeInit
  269.  
  270. forward Streamer_OnGameModeInit();
  271.  
  272. public OnPlayerConnect(playerid)
  273. {
  274. if (!IsPlayerNPC(playerid))
  275. {
  276. Streamer_AddPlayer(playerid);
  277. }
  278. if (Streamer_g_OPC)
  279. {
  280. return CallLocalFunction("Streamer_OnPlayerConnect", "d", playerid);
  281. }
  282. return 1;
  283. }
  284.  
  285. #if defined _ALS_OnPlayerConnect
  286. #undef OnPlayerConnect
  287. #else
  288. #define _ALS_OnPlayerConnect
  289. #endif
  290. #define OnPlayerConnect Streamer_OnPlayerConnect
  291.  
  292. forward Streamer_OnPlayerConnect(playerid);
  293.  
  294. public OnPlayerDisconnect(playerid, reason)
  295. {
  296. if (!IsPlayerNPC(playerid))
  297. {
  298. Streamer_RemovePlayer(playerid);
  299. }
  300. if (Streamer_g_OPDC)
  301. {
  302. return CallLocalFunction("Streamer_OnPlayerDisconnect", "dd", playerid, reason);
  303. }
  304. return 1;
  305. }
  306.  
  307. #if defined _ALS_OnPlayerDisconnect
  308. #undef OnPlayerDisconnect
  309. #else
  310. #define _ALS_OnPlayerDisconnect
  311. #endif
  312. #define OnPlayerDisconnect Streamer_OnPlayerDisconnect
  313.  
  314. forward Streamer_OnPlayerDisconnect(playerid, reason);
  315.  
  316. public OnPlayerPickUpPickup(playerid, pickupid)
  317. {
  318. if (!IsPlayerNPC(playerid))
  319. {
  320. Streamer_VerifyPickup(playerid, pickupid);
  321. }
  322. if (Streamer_g_OPPP)
  323. {
  324. return CallLocalFunction("Streamer_OnPlayerPickUpPickup", "dd", playerid, pickupid);
  325. }
  326. return 1;
  327. }
  328.  
  329. #if defined _ALS_OnPlayerPickUpPickup
  330. #undef OnPlayerPickUpPickup
  331. #else
  332. #define _ALS_OnPlayerPickUpPickup
  333. #endif
  334. #define OnPlayerPickUpPickup Streamer_OnPlayerPickUpPickup
  335.  
  336. forward Streamer_OnPlayerPickUpPickup(playerid, pickupid);
  337.  
  338. public OnPlayerEnterCheckpoint(playerid)
  339. {
  340. if (!IsPlayerNPC(playerid))
  341. {
  342. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_CP, 0);
  343. }
  344. if (Streamer_g_OPEC)
  345. {
  346. return CallLocalFunction("Streamer_OnPlayerEnterCP", "d", playerid);
  347. }
  348. return 1;
  349. }
  350.  
  351. #if defined _ALS_OnPlayerEnterCheckpoint
  352. #undef OnPlayerEnterCheckpoint
  353. #else
  354. #define _ALS_OnPlayerEnterCheckpoint
  355. #endif
  356. #define OnPlayerEnterCheckpoint Streamer_OnPlayerEnterCP
  357.  
  358. forward Streamer_OnPlayerEnterCP(playerid);
  359.  
  360. public OnPlayerLeaveCheckpoint(playerid)
  361. {
  362. if (!IsPlayerNPC(playerid))
  363. {
  364. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_CP, 1);
  365. }
  366. if (Streamer_g_OPLC)
  367. {
  368. return CallLocalFunction("Streamer_OnPlayerLeaveCP", "d", playerid);
  369. }
  370. return 1;
  371. }
  372.  
  373. #if defined _ALS_OnPlayerLeaveCheckpoint
  374. #undef OnPlayerLeaveCheckpoint
  375. #else
  376. #define _ALS_OnPlayerLeaveCheckpoint
  377. #endif
  378. #define OnPlayerLeaveCheckpoint Streamer_OnPlayerLeaveCP
  379.  
  380. forward Streamer_OnPlayerLeaveCP(playerid);
  381.  
  382. public OnPlayerEnterRaceCheckpoint(playerid)
  383. {
  384. if (!IsPlayerNPC(playerid))
  385. {
  386. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_RACE_CP, 0);
  387. }
  388. if (Streamer_g_OPERC)
  389. {
  390. return CallLocalFunction("Streamer_OnPlayerEnterRaceCP", "d", playerid);
  391. }
  392. return 1;
  393. }
  394.  
  395. #if defined _ALS_OnPlayerEnterRaceCP
  396. #undef OnPlayerEnterRaceCheckpoint
  397. #else
  398. #define _ALS_OnPlayerEnterRaceCP
  399. #endif
  400. #define OnPlayerEnterRaceCheckpoint Streamer_OnPlayerEnterRaceCP
  401.  
  402. forward Streamer_OnPlayerEnterRaceCP(playerid);
  403.  
  404. public OnPlayerLeaveRaceCheckpoint(playerid)
  405. {
  406. if (!IsPlayerNPC(playerid))
  407. {
  408. Streamer_VerifyCheckpoint(playerid, STREAMER_TYPE_RACE_CP, 1);
  409. }
  410. if (Streamer_g_OPLRC)
  411. {
  412. return CallLocalFunction("Streamer_OnPlayerLeaveRaceCP", "d", playerid);
  413. }
  414. return 1;
  415. }
  416.  
  417. #if defined _ALS_OnPlayerLeaveRaceCP
  418. #undef OnPlayerLeaveRaceCheckpoint
  419. #else
  420. #define _ALS_OnPlayerLeaveRaceCP
  421. #endif
  422. #define OnPlayerLeaveRaceCheckpoint Streamer_OnPlayerLeaveRaceCP
  423.  
  424. forward Streamer_OnPlayerLeaveRaceCP(playerid);
  425.  
  426. // PAWN Invoke Section
  427.  
  428. forward Streamer_PublicFunction();
  429.  
  430. public Streamer_PublicFunction()
  431. {
  432. new Float:value;
  433. CreatePickup(0, 0, 0.0, 0.0, 0.0, 0);
  434. CreatePlayer3DTextLabel(0, "", 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0);
  435. CreatePlayerObject(0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  436. DeletePlayer3DTextLabel(0, PlayerText3D:0);
  437. DestroyPickup(0);
  438. DestroyPlayerObject(0, 0);
  439. DisablePlayerCheckpoint(0);
  440. DisablePlayerRaceCheckpoint(0);
  441. GetPlayerInterior(0);
  442. GetPlayerPos(0, value, value, value);
  443. GetPlayerState(0);
  444. GetPlayerVirtualWorld(0);
  445. GetVehiclePos(0, value, value, value);
  446. MovePlayerObject(0, 0, 0.0, 0.0, 0.0, 0.0);
  447. RemovePlayerMapIcon(0, 0);
  448. SetPlayerCheckpoint(0, 0.0, 0.0, 0.0, 0.0);
  449. SetPlayerMapIcon(0, 0, 0.0, 0.0, 0.0, 0, 0, 0);
  450. SetPlayerObjectPos(0, 0, 0.0, 0.0, 0.0);
  451. SetPlayerObjectRot(0, 0, 0.0, 0.0, 0.0);
  452. SetPlayerRaceCheckpoint(0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  453. StopPlayerObject(0, 0);
  454. UpdatePlayer3DTextLabelText(0, PlayerText3D:0, 0, "");
  455. return 1;
  456. }
Add Comment
Please, Sign In to add comment