StreamerFunction.inc 117 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850
  1. /*******************************************************************************************************************************************
  2. * *
  3. * )( Streamer Functions )( *
  4. * *
  5. * Copyright © 2017 Abyss Morgan. All rights reserved. *
  6. * *
  7. * Download: https://github.com/AbyssMorgan/SA-MP/tree/master/include/SAM *
  8. * Publication: http://forum.sa-mp.com/showthread.php?t=590918 *
  9. * Website: http://8.ct8.pl *
  10. * *
  11. * Plugins: Streamer *
  12. * Modules: None *
  13. * *
  14. * File Version: 2.8.0 *
  15. * SA:MP Version: 0.3.7 (REQUIRE) *
  16. * Streamer Version: 2.9.1 *
  17. * *
  18. * Compiler Options: *
  19. * DISABLE_STREAMER_SPEC_CHECK //Turn off check streamer version *
  20. * ENABLE_BULLET_DYNAMIC_OBJECT //Turn on call OnPlayerWeaponShot when we shoot in a dynamic object *
  21. * DISABLE_STREAMER_SPEC_FIXES //Turn off fixes (not recommended) *
  22. * *
  23. * Objects Functions: *
  24. * GetDynamicObjectModel(objectid); *
  25. * SetDynamicObjectModel(objectid,modelid); *
  26. * GetDynamicObjectVW(objectid); *
  27. * SetDynamicObjectVW(objectid,worldid); *
  28. * GetDynamicObjectINT(objectid); *
  29. * SetDynamicObjectINT(objectid,interiorid); *
  30. * GetDynamicObjectSD(objectid,&Float:streamdistance); *
  31. * SetDynamicObjectSD(objectid,Float:streamdistance); *
  32. * GetDynamicObjectDD(objectid,&Float:drawdistance); *
  33. * SetDynamicObjectDD(objectid,Float:drawdistance); *
  34. * GetDynamicObjectPosAndRot(objectid,&Float:x,&Float:y,&Float:z,&Float:rx,&Float:ry,&Float:rz); *
  35. * SetDynamicObjectPosAndRot(objectid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); *
  36. * GetDynamicObjectMoveSpeed(objectid,&Float:speed); *
  37. * SetDynamicObjectMoveSpeed(objectid,Float:speed); *
  38. * GetDynamicObjectMovePos(objectid,&Float:x,&Float:y,&Float:z); *
  39. * SetDynamicObjectMovePos(objectid,Float:x,Float:y,Float:z); *
  40. * GetDynamicObjectMoveRot(objectid,&Float:rx,&Float:ry,&Float:rz); *
  41. * SetDynamicObjectMoveRot(objectid,Float:rx = -1000.0,Float:ry = -1000.0,Float:rz = -1000.0); *
  42. * GetDynamicObjectMoveTime(objectid,&objstate,&rtime=0); *
  43. * SetDynamicObjectAttachSync(objectid,syncrotation); *
  44. * RemoveDynamicObjectMaterial(objectid,materialindex); *
  45. * RemoveDynamicObjectMaterialAll(objectid); *
  46. * DeattachObjectDynamicObject(objectid); *
  47. * DeattachDynamicObjectComponent(objectid,type); *
  48. * DestroyDynamicObjectComponent(objectid,type); *
  49. * RebuildDynamicObject(objectid,...); *
  50. * GetDynamicObjectArea(objectid); *
  51. * SetDynamicObjectArea(objectid,areaid); *
  52. * GetDynamicObjectPriority(objectid); *
  53. * SetDynamicObjectPriority(objectid,priority); *
  54. * GetDynamicObjectDatagram(objectid,data[]); *
  55. * SetDynamicObjectDatagram(objectid,data[]); *
  56. * RemoveDynamicObjectDatagram(objectid); *
  57. * bool:IsSetDynamicObjectDatagram(objectid); *
  58. * GetDynamicObjectInvertArea(objectid); *
  59. * SetDynamicObjectInvertArea(objectid,toggle); *
  60. * *
  61. * SAMP Functions: *
  62. * GetObjectPosAndRot(objectid,&Float:x,&Float:y,&Float:z,&Float:rx,&Float:ry,&Float:rz); *
  63. * SetObjectPosAndRot(objectid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); *
  64. * CountObjects(); *
  65. * CountPlayerObjects(playerid,bool:streamer = false); *
  66. * DestroyObjects(); *
  67. * DestroyPlayerObjects(playerid,bool:streamer = false); *
  68. * GangZoneDestroyAll(); *
  69. * *
  70. * Cube Functions: *
  71. * DestroyDynamicObjectsInCube(Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz,worldid = -1,interiorid = -1); *
  72. * DestroyDynamicObjectsInCubeFM(modelid,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz,worldid = -1,interiorid = -1); *
  73. * bool:IsPointInArea(Float:x,Float:y,Float:z,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz); *
  74. * bool:IsPointInAreaEx(Float:x,Float:y,Float:z,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz,vw1,int1,vw2,int2); *
  75. * *
  76. * Vehicle Functions: *
  77. * CountVehicles(); *
  78. * DestroyVehicles(); *
  79. * DestroyVehicleDynamicObject(vehicleid); *
  80. * DeattachVehicleDynamicObject(vehicleid); *
  81. * GetVehicleDatagram(vehicleid,data[]); *
  82. * SetVehicleDatagram(vehicleid,data[]); *
  83. * RemoveVehicleDatagram(vehicleid); *
  84. * IsSetVehicleDatagram(vehicleid); *
  85. * *
  86. * Check Point Functions: *
  87. * GetDynamicCPPos(checkpointid,&Float:x,&Float:y,&Float:z); *
  88. * SetDynamicCPPos(checkpointid,Float:x,Float:y,Float:z); *
  89. * GetDynamicCPSize(checkpointid,&Float:size); *
  90. * SetDynamicCPSize(checkpointid,Float:size); *
  91. * GetDynamicCPVW(checkpointid); *
  92. * SetDynamicCPVW(checkpointid,worldid); *
  93. * GetDynamicCPINT(checkpointid); *
  94. * SetDynamicCPINT(checkpointid,interiorid); *
  95. * GetDynamicCPSD(checkpointid,&Float:streamdistance); *
  96. * SetDynamicCPSD(checkpointid,Float:streamdistance); *
  97. * GetDynamicCPArea(checkpointid); *
  98. * SetDynamicCPArea(checkpointid,areaid); *
  99. * GetDynamicCPPriority(checkpointid); *
  100. * SetDynamicCPPriority(checkpointid,priority); *
  101. * GetDynamicCPDatagram(checkpointid,data[]); *
  102. * SetDynamicCPDatagram(checkpointid,data[]); *
  103. * RemoveDynamicCPDatagram(checkpointid); *
  104. * bool:IsSetDynamicCPDatagram(checkpointid); *
  105. * GetDynamicCPInvertArea(checkpointid); *
  106. * SetDynamicCPInvertArea(checkpointid,toggle); *
  107. * *
  108. * Race Check Point Functions: *
  109. * GetDynamicRaceCPPos(checkpointid,&Float:x,&Float:y,&Float:z); *
  110. * SetDynamicRaceCPPos(checkpointid,Float:x,Float:y,Float:z); *
  111. * GetDynamicRaceCPNext(checkpointid,&Float:nextx,&Float:nexty,&Float:nextz); *
  112. * SetDynamicRaceCPNext(checkpointid,Float:nextx,Float:nexty,Float:nextz); *
  113. * GetDynamicRaceCPType(checkpointid); *
  114. * SetDynamicRaceCPType(checkpointid,type); *
  115. * GetDynamicRaceCPSize(checkpointid,&Float:size); *
  116. * SetDynamicRaceCPSize(checkpointid,Float:size); *
  117. * GetDynamicRaceCPVW(checkpointid); *
  118. * SetDynamicRaceCPVW(checkpointid,worldid); *
  119. * GetDynamicRaceCPINT(checkpointid); *
  120. * SetDynamicRaceCPINT(checkpointid,interiorid); *
  121. * GetDynamicRaceCPSD(checkpointid,&Float:streamdistance); *
  122. * SetDynamicRaceCPSD(checkpointid,Float:streamdistance); *
  123. * GetDynamicRaceCPArea(checkpointid); *
  124. * SetDynamicRaceCPArea(checkpointid,areaid); *
  125. * GetDynamicRaceCPPriority(checkpointid); *
  126. * SetDynamicRaceCPPriority(checkpointid,priority); *
  127. * GetDynamicRaceCPDatagram(checkpointid,data[]); *
  128. * SetDynamicRaceCPDatagram(checkpointid,data[]); *
  129. * RemoveDynamicRaceCPDatagram(checkpointid); *
  130. * bool:IsSetDynamicRaceCPDatagram(checkpointid); *
  131. * GetDynamicRaceCPInvertArea(checkpointid); *
  132. * SetDynamicRaceCPInvertArea(checkpointid,toggle); *
  133. * *
  134. * Player Functions: *
  135. * DestroyPlayerDynamicObject(playerid); *
  136. * DeattachPlayerDynamicObject(playerid); *
  137. * *
  138. * MapIcon Functions: *
  139. * GetDynamicMapIconPos(iconid,&Float:x,&Float:y,&Float:z); *
  140. * SetDynamicMapIconPos(iconid,Float:x,Float:y,Float:z); *
  141. * GetDynamicMapIconType(iconid); *
  142. * SetDynamicMapIconType(iconid,type); *
  143. * GetDynamicMapIconStyle(iconid); *
  144. * SetDynamicMapIconStyle(iconid,style); *
  145. * GetDynamicMapIconVW(iconid); *
  146. * SetDynamicMapIconVW(iconid,worldid); *
  147. * GetDynamicMapIconINT(iconid); *
  148. * SetDynamicMapIconINT(iconid,interiorid); *
  149. * GetDynamicMapIconSD(iconid,&Float:streamdistance); *
  150. * SetDynamicMapIconSD(iconid,Float:streamdistance); *
  151. * SetDynamicMapIconColor(iconid,color); *
  152. * GetDynamicMapIconColor(iconid); *
  153. * GetDynamicMapIconArea(iconid); *
  154. * SetDynamicMapIconArea(iconid,areaid); *
  155. * GetDynamicMapIconPriority(iconid); *
  156. * SetDynamicMapIconPriority(iconid,priority); *
  157. * GetDynamicMapIconDatagram(iconid,data[]); *
  158. * SetDynamicMapIconDatagram(iconid,data[]); *
  159. * RemoveDynamicMapIconDatagram(iconid); *
  160. * bool:IsSetDynamicMapIconDatagram(iconid); *
  161. * GetDynamicMapIconInvertArea(iconid); *
  162. * SetDynamicMapIconInvertArea(iconid,toggle); *
  163. * *
  164. * Pickup Functions: *
  165. * GetDynamicPickupPos(pickupid,&Float:x,&Float:y,&Float:z); *
  166. * SetDynamicPickupPos(pickupid,Float:x,Float:y,Float:z); *
  167. * GetDynamicPickupModel(pickupid); *
  168. * SetDynamicPickupModel(pickupid,modelid); *
  169. * GetDynamicPickupVW(pickupid); *
  170. * SetDynamicPickupVW(pickupid,worldid); *
  171. * GetDynamicPickupINT(pickupid); *
  172. * SetDynamicPickupINT(pickupid,interiorid); *
  173. * GetDynamicPickupSD(pickupid,&Float:streamdistance); *
  174. * SetDynamicPickupSD(pickupid,Float:streamdistance); *
  175. * GetDynamicPickupType(pickupid); *
  176. * SetDynamicPickupType(pickupid,type); *
  177. * GetDynamicPickupArea(pickupid); *
  178. * SetDynamicPickupArea(pickupid,areaid); *
  179. * GetDynamicPickupPriority(pickupid); *
  180. * SetDynamicPickupPriority(pickupid,priority); *
  181. * GetDynamicPickupDatagram(pickupid,data[]); *
  182. * SetDynamicPickupDatagram(pickupid,data[]); *
  183. * RemoveDynamicPickupDatagram(pickupid); *
  184. * bool:IsSetDynamicPickupDatagram(pickupid); *
  185. * GetDynamicPickupInvertArea(pickupid); *
  186. * SetDynamicPickupInvertArea(pickupid,toggle); *
  187. * *
  188. * 3DText Functions: *
  189. * GetDynamic3DTextPos(id,&Float:x,&Float:y,&Float:z); *
  190. * SetDynamic3DTextPos(id,Float:x,Float:y,Float:z); *
  191. * GetDynamic3DTextDD(id,Float:drawdistance); *
  192. * SetDynamic3DTextDD(id,Float:drawdistance); *
  193. * GetDynamic3DTextSD(id,&Float:streamdistance); *
  194. * SetDynamic3DTextSD(id,Float:streamdistance); *
  195. * GetDynamic3DTextVW(id); *
  196. * SetDynamic3DTextVW(id,worldid); *
  197. * GetDynamic3DTextINT(id); *
  198. * SetDynamic3DTextINT(id,interiorid); *
  199. * GetDynamic3DTextColor(id); *
  200. * SetDynamic3DTextColor(id,color); *
  201. * GetDynamic3DTextArea(id); *
  202. * SetDynamic3DTextArea(id,areaid); *
  203. * GetDynamic3DTextPriority(id); *
  204. * SetDynamic3DTextPriority(id,priority); *
  205. * SetDynamic3DTextTestLos(id,testlos); *
  206. * AttachDynamic3DTextToPlayer(id,attachedplayer); *
  207. * AttachDynamic3DTextToVehicle(id,attachedvehicle); *
  208. * GetDynamic3DTextDatagram(id,data[]); *
  209. * SetDynamic3DTextDatagram(id,data[]); *
  210. * RemoveDynamic3DTextDatagram(id); *
  211. * bool:IsSetDynamic3DTextDatagram(id); *
  212. * GetDynamic3DTextInvertArea(id); *
  213. * SetDynamic3DTextInvertArea(id,toggle); *
  214. * *
  215. * Area Functions: *
  216. * GetDynamicCirclePos(areaid,&Float:x,&Float:y); *
  217. * SetDynamicCirclePos(areaid,Float:x,Float:y); *
  218. * GetDynamicCylinderPos(areaid,&Float:x,&Float:y,&Float:minz,&Float:maxz); *
  219. * SetDynamicCylinderPos(areaid,Float:x,Float:y,Float:minz,Float:maxz); *
  220. * GetDynamicSpherePos(areaid,&Float:x,&Float:y,&Float:z); *
  221. * SetDynamicSpherePos(areaid,Float:x,Float:y,Float:z); *
  222. * GetDynamicRectanglePos(areaid,&Float:minx,&Float:miny,&Float:maxx,&Float:maxy); *
  223. * SetDynamicRectanglePos(areaid,Float:minx,Float:miny,Float:maxx,Float:maxy); *
  224. * GetDynamicCubePos(areaid,&Float:minx,&Float:miny,&Float:minz,&Float:maxx,&Float:maxy,&Float:maxz); *
  225. * SetDynamicCubePos(areaid,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz); *
  226. * GetDynamicCuboidPos(areaid,&Float:minx,&Float:miny,&Float:minz,&Float:maxx,&Float:maxy,&Float:maxz); *
  227. * SetDynamicCuboidPos(areaid,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz); *
  228. * GetDynamicAreaVW(areaid); *
  229. * SetDynamicAreaVW(areaid,worldid); *
  230. * GetDynamicAreaINT(areaid); *
  231. * SetDynamicAreaINT(areaid,interiorid); *
  232. * GetDynamicAreaSize(areaid,Float:size); *
  233. * SetDynamicAreaSize(areaid,Float:size); *
  234. * GetDynamicAreaDatagram(areaid,data[]); *
  235. * SetDynamicAreaDatagram(areaid,data[]); *
  236. * RemoveDynamicAreaDatagram(areaid); *
  237. * bool:IsSetDynamicAreaDatagram(areaid); *
  238. * *
  239. * Actor Functions: *
  240. * GetDynamicActorModel(actorid); *
  241. * SetDynamicActorModel(actorid,modelid); *
  242. * GetDynamicActorArea(actorid); *
  243. * SetDynamicActorArea(actorid,areaid); *
  244. * GetDynamicActorPriority(actorid); *
  245. * SetDynamicActorPriority(actorid,priority); *
  246. * GetDynamicActorSD(actorid,&Float:streamdistance); *
  247. * SetDynamicActorSD(actorid,Float:streamdistance); *
  248. * GetDynamicActorDatagram(actorid,data[]); *
  249. * SetDynamicActorDatagram(actorid,data[]); *
  250. * RemoveDynamicActorDatagram(actorid); *
  251. * IsSetDynamicActorDatagram(actorid); *
  252. * GetDynamicActorInterior(actorid); *
  253. * SetDynamicActorInterior(actorid,interiorid); *
  254. * DestroyAllDynamicActors(); *
  255. * CountDynamicActors(); *
  256. * GetDynamicActorInvertArea(actorid); *
  257. * SetDynamicActorInvertArea(actorid,toggle); *
  258. * *
  259. * Dynamic Vehicle Functions: *
  260. * SetDynamicVehicleModel(vehicleid,modelid); *
  261. * GetDynamicVehicleSiren(vehicleid); *
  262. * SetDynamicVehicleSiren(vehicleid,siren); *
  263. * GetDynamicVehicleRespawnTime(vehicleid); *
  264. * SetDynamicVehicleRespawnTime(vehicleid,respawndelay); *
  265. * GetDynamicVehicleArea(vehicleid); *
  266. * SetDynamicVehicleArea(vehicleid,areaid); *
  267. * GetDynamicVehiclePriority(vehicleid); *
  268. * SetDynamicVehiclePriority(vehicleid,priority); *
  269. * GetDynamicVehicleSD(vehicleid,&Float:streamdistance); *
  270. * SetDynamicVehicleSD(vehicleid,Float:streamdistance); *
  271. * GetDynamicVehicleInvertArea(vehicleid); *
  272. * SetDynamicVehicleInvertArea(vehicleid,toggle); *
  273. * GetDynamicVehicleDatagram(vehicleid,data[]); *
  274. * SetDynamicVehicleDatagram(vehicleid,data[]); *
  275. * RemoveDynamicVehicleDatagram(vehicleid); *
  276. * IsSetDynamicVehicleDatagram(vehicleid); *
  277. * DestroyAllDynamicVehicles(); *
  278. * CountDynamicVehicles(); *
  279. * *
  280. * Anti Area Functions: *
  281. * IsPointInAntiArea(areaid,Float:x,Float:y,Float:z); *
  282. * IsPlayerInAntiArea(playerid,areaid,recheck = 0); *
  283. * IsPlayerInAnyAntiArea(playerid,recheck = 0); *
  284. * IsAnyPlayerInAntiArea(areaid,recheck = 0); *
  285. * IsAnyPlayerInAnyAntiArea(recheck = 0); *
  286. * *
  287. * Anti Area Callbacks: *
  288. * OnPlayerEnterAntiArea(playerid,areaid); *
  289. * OnPlayerLeaveAntiArea(playerid,areaid); *
  290. * *
  291. * Pool Size Functions: *
  292. * GetDynamicObjectPoolSize(); *
  293. * GetDynamicPickupPoolSize(); *
  294. * GetDynamicCPPoolSize(); *
  295. * GetDynamicRaceCPPoolSize(); *
  296. * GetDynamicMapIconPoolSize(); *
  297. * GetDynamic3DTextPoolSize(); *
  298. * GetDynamicAreaPoolSize(); *
  299. * GetDynamicActorPoolSize(); *
  300. * GetDynamicVehiclePoolSize(); *
  301. * *
  302. * Update Functions: *
  303. * UpdateAllDynamicElements(); *
  304. * UpdateAllDynamicObjects(); *
  305. * UpdateAllDynamicPickups(); *
  306. * UpdateAllDynamicCPs(); *
  307. * UpdateAllDynamicRaceCPs(); *
  308. * UpdateAllDynamicMapIcons(); *
  309. * UpdateAllDynamic3DTextLabels(); *
  310. * UpdateAllDynamicAreas(); *
  311. * UpdateAllDynamicActors(); *
  312. * UpdateAllDynamicVehicles(); *
  313. * *
  314. * Foreach Functions: *
  315. * ForDynamicObjects(variable); *
  316. * ForDynamicPickups(variable); *
  317. * ForDynamicCPs(variable); *
  318. * ForDynamicRaceCPs(variable); *
  319. * ForDynamicMapIcons(variable); *
  320. * ForDynamic3DTextLabels(variable); *
  321. * ForDynamicAreas(variable); *
  322. * ForDynamicActors(variable); *
  323. * ForDynamicVehicles(variable); *
  324. * *
  325. * Nearest Item Functions: *
  326. * GetNearestVisibleItem(playerid,type); *
  327. * GetNearestVisibleObject(playerid); *
  328. * GetNearestVisiblePickup(playerid); *
  329. * GetNearestVisibleCP(playerid); *
  330. * GetNearestVisibleRaceCP(playerid); *
  331. * GetNearestVisibleMapIcon(playerid); *
  332. * GetNearestVisible3DText(playerid); *
  333. * GetNearestVisibleArea(playerid); *
  334. * GetNearestVisibleActor(playerid); *
  335. * GetNearestVisibleVehicle(playerid); *
  336. * *
  337. * Extended Functions: *
  338. * bool:IsValidStreamer(version); *
  339. * GetStreamerVersion(); *
  340. * GetValidStreamerVersion(); *
  341. * GetStreamerVersionName(name[], value = GET_STREAMER_VERSION, maxdest = sizeof name); *
  342. * CheckStreamerVersion(); *
  343. * GetStreamerDatagram(type,itemid,data[]); *
  344. * SetStreamerDatagram(type,itemid,data[]); *
  345. * RemoveStreamDatagram(type,itemid); *
  346. * bool:IsSetStreamerDatagram(type,itemid); *
  347. * GetStreamerSpecActiveCount(); *
  348. * *
  349. * Definitions: *
  350. * DEFAULT_VISIBLE_OBJECT *
  351. * DEFAULT_VISIBLE_PICKUP *
  352. * DEFAULT_VISIBLE_MAP_ICON *
  353. * DEFAULT_VISIBLE_3D_TEXT *
  354. * DEFAULT_VISIBLE_ACTOR *
  355. * INVALID_DYNAMIC_OBJECT_ID *
  356. * INVALID_DYNAMIC_PICKUP_ID *
  357. * INVALID_DYNAMIC_CP_ID *
  358. * INVALID_DYNAMIC_RACE_CP_ID *
  359. * INVALID_DYNAMIC_MAP_ICON_ID *
  360. * INVALID_DYNAMIC_3D_TEXT_ID *
  361. * INVALID_DYNAMIC_AREA_ID *
  362. * INVALID_DYNAMIC_ACTOR_ID *
  363. * INVALID_DYNAMIC_VEHICLE_ID *
  364. * INVALID_PICKUP_ID *
  365. * INVALID_STREAMER_COMPONENT *
  366. * MAX_STREAM_SIZE *
  367. * *
  368. * Fixes: *
  369. * DestroyDynamicObject -> Resets the variable after the destruction of the DynamicObject. *
  370. * DestroyDynamicPickup -> Resets the variable after the destruction of the DynamicPickup. *
  371. * DestroyDynamicCP -> Resets the variable after the destruction of the DynamicCP. *
  372. * DestroyDynamicRaceCP -> Resets the variable after the destruction of the DynamicRaceCP. *
  373. * DestroyDynamicMapIcon -> Resets the variable after the destruction of the DynamicMapIcon. *
  374. * DestroyDynamic3DTextLabel -> Resets the variable after the destruction of the Dynamic3DTextLabel. *
  375. * DestroyDynamicArea -> Resets the variable after the destruction of the DynamicArea. *
  376. * DestroyDynamicActor -> Resets the variable after the destruction of the DynamicActor. *
  377. * DestroyDynamicVehicle -> Resets the variable after the destruction of the DynamicVehicle. *
  378. * DestroyObject -> Resets the variable after the destruction of the Object. *
  379. * DestroyPlayerObject -> Resets the variable after the destruction of the PlayerObject. *
  380. * DestroyPickup -> Resets the variable after the destruction of the Pickup. *
  381. * Delete3DTextLabel -> Resets the variable after the destruction of the 3DTextLabel. *
  382. * DeletePlayer3DTextLabel -> Resets the variable after the destruction of the Player3DTextLabel. *
  383. * AttachDynamicObjectToObject -> Changes the priority of the parent to be greater than the priority of sub-objects. *
  384. * *
  385. *******************************************************************************************************************************************/
  386. /*
  387. //Check Version StreamerFunction.inc
  388. #if !defined _streamer_spec
  389. #error [ADM] You need StreamerFunction.inc v2.8.0 (github.com/AbyssMorgan/SA-MP/blob/master/include/SAM/StreamerFunction.inc)
  390. #elseif !defined Streamer_Spec_Version
  391. #error [ADM] Update you StreamerFunction.inc to v2.8.0 (github.com/AbyssMorgan/SA-MP/blob/master/include/SAM/StreamerFunction.inc)
  392. #elseif (Streamer_Spec_Version < 20800)
  393. #error [ADM] Update you StreamerFunction.inc to v2.8.0 (github.com/AbyssMorgan/SA-MP/blob/master/include/SAM/StreamerFunction.inc)
  394. #endif
  395. */
  396. #if defined _streamer_spec
  397. #endinput
  398. #endif
  399. #define _streamer_spec
  400. #if (!defined GetPlayerPoolSize || !defined GetSVarInt)
  401. #error [ADM] This include requires SA:MP version 0.3.7 (github.com/AbyssMorgan/SA-MP/blob/master/samp/include)
  402. #endif
  403. #if ((!defined Streamer_AppendArrayData) || (!defined INVALID_STREAMER_ID) || (!defined STREAMER_TYPE_ACTOR))
  404. #error [ADM] You need Streamer v2.9.1 (github.com/samp-incognito/samp-streamer-plugin/releases)
  405. #endif
  406. #if defined STREAMER_TYPE_VEHICLE
  407. #define SSpec_StreamerVehicle
  408. #endif
  409. #define Streamer_Spec_Version (20800) //a.b.c 10000*a+100*b+c
  410. #define Streamer_Spec_SAMP_Version "0.3.7"
  411. #define Valid_Streamer_Version (0x291)
  412. //Update Checker
  413. #if !defined HTTP
  414. #tryinclude <a_http>
  415. #endif
  416. #if !defined HTTP
  417. #error [ADM] Please include a_http.inc before StreamerFunction.inc
  418. #endif
  419. #if defined INVALID_DYNAMIC_OBJECT_ID
  420. #if (INVALID_DYNAMIC_OBJECT_ID != INVALID_STREAMER_ID)
  421. #error [ADM] Invalid DestroyDynamicObject Hook version. Invalid definition INVALID_DYNAMIC_OBJECT_ID
  422. #endif
  423. #undef INVALID_DYNAMIC_OBJECT_ID
  424. #endif
  425. #define INVALID_DYNAMIC_OBJECT_ID STREAMER_TAG_OBJECT INVALID_STREAMER_ID
  426. #define INVALID_DYNAMIC_PICKUP_ID STREAMER_TAG_PICKUP INVALID_STREAMER_ID
  427. #define INVALID_DYNAMIC_CP_ID STREAMER_TAG_CP INVALID_STREAMER_ID
  428. #define INVALID_DYNAMIC_RACE_CP_ID STREAMER_TAG_RACE_CP INVALID_STREAMER_ID
  429. #define INVALID_DYNAMIC_MAP_ICON_ID STREAMER_TAG_MAP_ICON INVALID_STREAMER_ID
  430. #define INVALID_DYNAMIC_3D_TEXT_ID STREAMER_TAG_3D_TEXT_LABEL INVALID_STREAMER_ID
  431. #define INVALID_DYNAMIC_AREA_ID STREAMER_TAG_AREA INVALID_STREAMER_ID
  432. #define INVALID_DYNAMIC_ACTOR_ID STREAMER_TAG_ACTOR INVALID_STREAMER_ID
  433. #if defined SSpec_StreamerVehicle
  434. #define INVALID_DYNAMIC_VEHICLE_ID STREAMER_TAG_VEHICLE INVALID_STREAMER_ID
  435. #endif
  436. #define DEFAULT_VISIBLE_OBJECT 500
  437. #define DEFAULT_VISIBLE_PICKUP 4096
  438. #define DEFAULT_VISIBLE_MAP_ICON 100
  439. #define DEFAULT_VISIBLE_3D_TEXT 1024
  440. #define DEFAULT_VISIBLE_ACTOR 1000
  441. #if defined SSpec_StreamerVehicle
  442. #define DEFAULT_VISIBLE_VEHICLE 2000
  443. #endif
  444. #if !defined INVALID_PICKUP_ID
  445. #define INVALID_PICKUP_ID -1
  446. #endif
  447. #if !defined MAX_STREAM_SIZE
  448. #define MAX_STREAM_SIZE 256
  449. #endif
  450. #if !defined INVALID_STREAMER_COMPONENT
  451. #define INVALID_STREAMER_COMPONENT -1
  452. #endif
  453. #define STREAMEX_VEHICLE 12
  454. #define StreamerSpec_Function:: stock
  455. #define StreamerSpec_Public::%0(%1) forward %0(%1); public %0(%1)
  456. #define StreamerSpec:: StreamerSpec_
  457. #if !defined isnull
  458. #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  459. #endif
  460. #define GET_STREAMER_VERSION 0xFFFFFFFF
  461. #define MOVE_OBJECT_STATE_STOP 0
  462. #define MOVE_OBJECT_STATE_MOVED 1
  463. #define MOVE_OBJECT_STATE_INVALID 2
  464. #define BULLET_HIT_TYPE_DYNAMIC_OBJECT 15
  465. #define GetStreamerVersion() Streamer_IncludeFileVersion
  466. #define GetValidStreamerVersion() Valid_Streamer_Version
  467. //DynamicObject
  468. #define GetDynamicObjectModel(%1) Streamer_GetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_MODEL_ID)
  469. #define SetDynamicObjectModel(%1,%2) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_MODEL_ID,(%2))
  470. #define GetDynamicObjectINT(%1) Streamer_GetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_INTERIOR_ID)
  471. #define SetDynamicObjectINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_INTERIOR_ID,(%2))
  472. #define GetDynamicObjectVW(%1) Streamer_GetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_WORLD_ID)
  473. #define SetDynamicObjectVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_WORLD_ID,(%2))
  474. #define GetDynamicObjectSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  475. #define SetDynamicObjectSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  476. #define GetDynamicObjectDD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_DRAW_DISTANCE,(%2))
  477. #define SetDynamicObjectDD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_DRAW_DISTANCE,(%2))
  478. #define GetDynamicObjectMoveSpeed(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_MOVE_SPEED,(%2))
  479. #define SetDynamicObjectMoveSpeed(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_MOVE_SPEED,(%2))
  480. #define DeattachObjectDynamicObject(%1) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_ATTACHED_OBJECT,INVALID_STREAMER_ID)
  481. #define SetDynamicObjectAttachSync(%1,%2) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_SYNC_ROTATION,(%2))
  482. #define GetDynamicObjectArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_AREA_ID)
  483. #define SetDynamicObjectArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_AREA_ID,(_:%2))
  484. #define GetDynamicObjectPriority(%1) Streamer_GetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_PRIORITY)
  485. #define SetDynamicObjectPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_OBJECT,(%1),E_STREAMER_PRIORITY,(%2))
  486. #define GetDynamicObjectInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_OBJECT,(%1))
  487. #define SetDynamicObjectInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_OBJECT,(%1),(%2))
  488. #define GetDynamicObjectDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_OBJECT,(%1),(%2))
  489. #define SetDynamicObjectDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_OBJECT,(%1),(%2))
  490. #define RemoveDynamicObjectDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_OBJECT,(%1))
  491. #define IsSetDynamicObjectDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_OBJECT,(%1))
  492. //DynamicPickup
  493. #define GetDynamicPickupModel(%1) Streamer_GetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_MODEL_ID)
  494. #define SetDynamicPickupModel(%1,%2) Streamer_SetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_MODEL_ID,(%2))
  495. #define GetDynamicPickupSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  496. #define SetDynamicPickupSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  497. #define GetDynamicPickupVW(%1) Streamer_GetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_WORLD_ID)
  498. #define SetDynamicPickupVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_WORLD_ID,(%2))
  499. #define GetDynamicPickupINT(%1) Streamer_GetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_INTERIOR_ID)
  500. #define SetDynamicPickupINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_INTERIOR_ID,(%2))
  501. #define GetDynamicPickupType(%1) Streamer_GetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_TYPE)
  502. #define SetDynamicPickupType(%1,%2) Streamer_SetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_TYPE,(%2))
  503. #define GetDynamicPickupArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_AREA_ID)
  504. #define SetDynamicPickupArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_AREA_ID,(_:%2))
  505. #define GetDynamicPickupPriority(%1) Streamer_GetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_PRIORITY)
  506. #define SetDynamicPickupPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_PICKUP,(%1),E_STREAMER_PRIORITY,(%2))
  507. #define GetDynamicPickupInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_PICKUP,(%1))
  508. #define SetDynamicPickupInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_PICKUP,(%1),(%2))
  509. #define GetDynamicPickupDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_PICKUP,(%1),(%2))
  510. #define SetDynamicPickupDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_PICKUP,(%1),(%2))
  511. #define RemoveDynamicPickupDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_PICKUP,(%1))
  512. #define IsSetDynamicPickupDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_PICKUP,(%1))
  513. //DynamicCP
  514. #define GetDynamicCPSize(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_CP,(%1),E_STREAMER_SIZE,(%2))
  515. #define SetDynamicCPSize(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_CP,(%1),E_STREAMER_SIZE,(%2))
  516. #define GetDynamicCPArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_AREA_ID)
  517. #define SetDynamicCPArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_AREA_ID,(_:%2))
  518. #define GetDynamicCPPriority(%1) Streamer_GetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_PRIORITY)
  519. #define SetDynamicCPPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_PRIORITY,(%2))
  520. #define GetDynamicCPSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_CP,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  521. #define SetDynamicCPSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_CP,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  522. #define GetDynamicCPVW(%1) Streamer_GetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_WORLD_ID)
  523. #define SetDynamicCPVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_WORLD_ID,(%2))
  524. #define GetDynamicCPINT(%1) Streamer_GetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_INTERIOR_ID)
  525. #define SetDynamicCPINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_CP,(%1),E_STREAMER_INTERIOR_ID,(%2))
  526. #define GetDynamicCPInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_CP,(%1))
  527. #define SetDynamicCPInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_CP,(%1),(%2))
  528. #define GetDynamicCPDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_CP,(%1),(%2))
  529. #define SetDynamicCPDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_CP,(%1),(%2))
  530. #define RemoveDynamicCPDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_CP,(%1))
  531. #define IsSetDynamicCPDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_CP,(%1))
  532. //DynamicRaceCP
  533. #define GetDynamicRaceCPSize(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_SIZE,(%2))
  534. #define SetDynamicRaceCPSize(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_SIZE,(%2))
  535. #define GetDynamicRaceCPArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_AREA_ID)
  536. #define SetDynamicRaceCPArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_AREA_ID,(_:%2))
  537. #define GetDynamicRaceCPPriority(%1) Streamer_GetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_PRIORITY)
  538. #define SetDynamicRaceCPPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_PRIORITY,(%2))
  539. #define GetDynamicRaceCPSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  540. #define SetDynamicRaceCPSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  541. #define GetDynamicRaceCPType(%1) Streamer_GetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_TYPE)
  542. #define SetDynamicRaceCPType(%1,%2) Streamer_SetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_TYPE,(%2))
  543. #define GetDynamicRaceCPVW(%1) Streamer_GetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_WORLD_ID)
  544. #define SetDynamicRaceCPVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_WORLD_ID,(%2))
  545. #define GetDynamicRaceCPINT(%1) Streamer_GetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_INTERIOR_ID)
  546. #define SetDynamicRaceCPINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_RACE_CP,(%1),E_STREAMER_INTERIOR_ID,(%2))
  547. #define GetDynamicRaceCPInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_RACE_CP,(%1))
  548. #define SetDynamicRaceCPInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_RACE_CP,(%1),(%2))
  549. #define GetDynamicRaceCPDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_RACE_CP,(%1),(%2))
  550. #define SetDynamicRaceCPDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_RACE_CP,(%1),(%2))
  551. #define RemoveDynamicRaceCPDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_RACE_CP,(%1))
  552. #define IsSetDynamicRaceCPDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_RACE_CP,(%1))
  553. //DynamicMapIcon
  554. #define GetDynamicMapIconColor(%1) Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_COLOR)
  555. #define SetDynamicMapIconColor(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_COLOR,(%2))
  556. #define GetDynamicMapIconArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_AREA_ID)
  557. #define SetDynamicMapIconArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_AREA_ID,(_:%2))
  558. #define GetDynamicMapIconPriority(%1) Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_PRIORITY)
  559. #define SetDynamicMapIconPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_PRIORITY,(%2))
  560. #define GetDynamicMapIconSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  561. #define SetDynamicMapIconSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  562. #define GetDynamicMapIconType(%1) Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_TYPE)
  563. #define SetDynamicMapIconType(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_TYPE,(%2))
  564. #define GetDynamicMapIconVW(%1) Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_WORLD_ID)
  565. #define SetDynamicMapIconVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_WORLD_ID,(%2))
  566. #define GetDynamicMapIconINT(%1) Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_INTERIOR_ID)
  567. #define SetDynamicMapIconINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_INTERIOR_ID,(%2))
  568. #define GetDynamicMapIconStyle(%1) Streamer_GetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_STYLE)
  569. #define SetDynamicMapIconStyle(%1,%2) Streamer_SetIntData(STREAMER_TYPE_MAP_ICON,(%1),E_STREAMER_STYLE,(%2))
  570. #define GetDynamicMapIconDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_MAP_ICON,(%1),(%2))
  571. #define SetDynamicMapIconDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_MAP_ICON,(%1),(%2))
  572. #define GetDynamicMapIconInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_MAP_ICON,(%1))
  573. #define SetDynamicMapIconInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_MAP_ICON,(%1),(%2))
  574. #define RemoveDynamicMapIconDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_MAP_ICON,(%1))
  575. #define IsSetDynamicMapIconDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_MAP_ICON,(%1))
  576. //Dynamic3DText
  577. #define GetDynamic3DTextDD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_DRAW_DISTANCE,(%2))
  578. #define SetDynamic3DTextDD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_DRAW_DISTANCE,(%2))
  579. #define GetDynamic3DTextSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  580. #define SetDynamic3DTextSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  581. #define GetDynamic3DTextVW(%1) Streamer_GetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_WORLD_ID)
  582. #define SetDynamic3DTextVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_WORLD_ID,(%2))
  583. #define GetDynamic3DTextINT(%1) Streamer_GetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_INTERIOR_ID)
  584. #define SetDynamic3DTextINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_INTERIOR_ID,(%2))
  585. #define GetDynamic3DTextColor(%1) Streamer_GetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_COLOR)
  586. #define SetDynamic3DTextColor(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_COLOR,(%2))
  587. #define SetDynamic3DTextTestLos(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_TEST_LOS,(%2))
  588. #define AttachDynamic3DTextToPlayer(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_ATTACHED_PLAYER,(%2))
  589. #define AttachDynamic3DTextToVehicle(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_ATTACHED_VEHICLE,(%2))
  590. #define GetDynamic3DTextArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_AREA_ID)
  591. #define SetDynamic3DTextArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_AREA_ID,(_:%2))
  592. #define GetDynamic3DTextPriority(%1) Streamer_GetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_PRIORITY)
  593. #define SetDynamic3DTextPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_3D_TEXT_LABEL,(%1),E_STREAMER_PRIORITY,(%2))
  594. #define GetDynamic3DTextInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_3D_TEXT_LABEL,(%1))
  595. #define SetDynamic3DTextInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_3D_TEXT_LABEL,(%1),(%2))
  596. #define GetDynamic3DTextDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_3D_TEXT_LABEL,(_:%1),(%2))
  597. #define SetDynamic3DTextDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_3D_TEXT_LABEL,(_:%1),(%2))
  598. #define RemoveDynamic3DTextDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_3D_TEXT_LABEL,(_:%1))
  599. #define IsSetDynamic3DTextDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_3D_TEXT_LABEL,(_:%1))
  600. //DynamicArea
  601. #define GetDynamicAreaVW(%1) Streamer_GetIntData(STREAMER_TYPE_AREA,(%1),E_STREAMER_WORLD_ID)
  602. #define SetDynamicAreaVW(%1,%2) Streamer_SetIntData(STREAMER_TYPE_AREA,(%1),E_STREAMER_WORLD_ID,(%2))
  603. #define GetDynamicAreaINT(%1) Streamer_GetIntData(STREAMER_TYPE_AREA,(%1),E_STREAMER_INTERIOR_ID)
  604. #define SetDynamicAreaINT(%1,%2) Streamer_SetIntData(STREAMER_TYPE_AREA,(%1),E_STREAMER_INTERIOR_ID,(%2))
  605. #define GetDynamicAreaSize(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_AREA,(%1),E_STREAMER_SIZE,(%2))
  606. #define SetDynamicAreaSize(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_AREA,(%1),E_STREAMER_SIZE,(%2))
  607. #define GetDynamicAreaDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_AREA,(%1),(%2))
  608. #define SetDynamicAreaDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_AREA,(%1),(%2))
  609. #define RemoveDynamicAreaDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_AREA,(%1))
  610. #define IsSetDynamicAreaDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_AREA,(%1))
  611. //DynamicActor
  612. #define GetDynamicActorModel(%1) Streamer_GetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_MODEL_ID)
  613. #define SetDynamicActorModel(%1,%2) Streamer_SetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_MODEL_ID,(%2))
  614. #define GetDynamicActorInterior(%1) Streamer_GetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_INTERIOR_ID)
  615. #define SetDynamicActorInterior(%1,%2) Streamer_SetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_INTERIOR_ID,(%2))
  616. #define GetDynamicActorArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_AREA_ID)
  617. #define SetDynamicActorArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_AREA_ID,(_:%2))
  618. #define GetDynamicActorPriority(%1) Streamer_GetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_PRIORITY)
  619. #define SetDynamicActorPriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_PRIORITY,(%2))
  620. #define GetDynamicActorSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  621. #define SetDynamicActorSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_ACTOR,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  622. #define GetDynamicActorInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_ACTOR,(%1))
  623. #define SetDynamicActorInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_ACTOR,(%1),(%2))
  624. #define GetDynamicActorDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_ACTOR,(%1),(%2))
  625. #define SetDynamicActorDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_ACTOR,(%1),(%2))
  626. #define RemoveDynamicActorDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_ACTOR,(%1))
  627. #define IsSetDynamicActorDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_ACTOR,(%1))
  628. #define DestroyAllDynamicActors() Streamer_DestroyAllItems(STREAMER_TYPE_ACTOR,1)
  629. #define CountDynamicActors() Streamer_CountItems(STREAMER_TYPE_ACTOR,1)
  630. //DynamicVehicle
  631. #if defined SSpec_StreamerVehicle
  632. #define SetDynamicVehicleModel(%1,%2) Streamer_SetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_MODEL_ID,(%2))
  633. #define GetDynamicVehicleSiren(%1) Streamer_GetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_SIREN)
  634. #define SetDynamicVehicleSiren(%1,%2) Streamer_SetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_SIREN,(%2))
  635. #define GetDynamicVehicleRespawnTime(%1) Streamer_GetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_RESPAWN_TIME)
  636. #define SetDynamicVehicleRespawnTime(%1,%2) Streamer_SetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_RESPAWN_TIME,(%2))
  637. #define GetDynamicVehicleArea(%1) STREAMER_TAG_AREA Streamer_GetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_AREA_ID)
  638. #define SetDynamicVehicleArea(%1,%2) Streamer_SetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_AREA_ID,(_:%2))
  639. #define GetDynamicVehiclePriority(%1) Streamer_GetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_PRIORITY)
  640. #define SetDynamicVehiclePriority(%1,%2) Streamer_SetIntData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_PRIORITY,(%2))
  641. #define GetDynamicVehicleSD(%1,%2) Streamer_GetFloatData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  642. #define SetDynamicVehicleSD(%1,%2) Streamer_SetFloatData(STREAMER_TYPE_VEHICLE,(%1),E_STREAMER_STREAM_DISTANCE,(%2))
  643. #define GetDynamicVehicleInvertArea(%1) Streamer_IsToggleItemInvAreas(STREAMER_TYPE_VEHICLE,(%1))
  644. #define SetDynamicVehicleInvertArea(%1,%2) Streamer_ToggleItemInvAreas(STREAMER_TYPE_VEHICLE,(%1),(%2))
  645. #define GetDynamicVehicleDatagram(%1,%2) GetStreamerDatagram(STREAMER_TYPE_VEHICLE,(%1),(%2))
  646. #define SetDynamicVehicleDatagram(%1,%2) SetStreamerDatagram(STREAMER_TYPE_VEHICLE,(%1),(%2))
  647. #define RemoveDynamicVehicleDatagram(%1) RemoveStreamDatagram(STREAMER_TYPE_VEHICLE,(%1))
  648. #define IsSetDynamicVehicleDatagram(%1) IsSetStreamerDatagram(STREAMER_TYPE_VEHICLE,(%1))
  649. #define DestroyAllDynamicVehicles() Streamer_DestroyAllItems(STREAMER_TYPE_VEHICLE,1)
  650. #define CountDynamicVehicles() Streamer_CountItems(STREAMER_TYPE_VEHICLE,1)
  651. #define GetDynamicVehiclePoolSize() Streamer_GetUpperBound(STREAMER_TYPE_VEHICLE)
  652. #define ForDynamicVehicles(%1) for(new STREAMER_TAG_VEHICLE %1 = STREAMER_TAG_VEHICLE 1, STREAMER_TAG_VEHICLE p_%1 = STREAMER_TAG_VEHICLE GetDynamicVehiclePoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_VEHICLE ((_:%1)+=1))
  653. #define GetNearestVisibleVehicle(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_VEHICLE)
  654. #endif
  655. //DynamicAntiArea
  656. #define IsPlayerInAntiArea(%0,%1,%2) (!IsPlayerInDynamicArea(%0,%1,%2))
  657. #define IsPlayerInAnyAntiArea(%0,%1) (!IsPlayerInAnyDynamicArea(%0,%1))
  658. #define IsAnyPlayerInAntiArea(%0,%1) (!IsAnyPlayerInDynamicArea(%0,%1))
  659. #define IsAnyPlayerInAnyAntiArea(%0) (!IsAnyPlayerInAnyDynamicArea(%0))
  660. #define IsPointInAntiArea(%0,%1,%2,%3) (!IsPointInDynamicArea(%0,%1,%2,%3))
  661. //Vehicle
  662. #define GetVehicleDatagram(%1,%2) GetStreamerDatagram(STREAMEX_VEHICLE,(%1),(%2))
  663. #define SetVehicleDatagram(%1,%2) SetStreamerDatagram(STREAMEX_VEHICLE,(%1),(%2))
  664. #define RemoveVehicleDatagram(%1) RemoveStreamDatagram(STREAMEX_VEHICLE,(%1))
  665. #define IsSetVehicleDatagram(%1) IsSetStreamerDatagram(STREAMEX_VEHICLE,(%1))
  666. //PoolSize
  667. #define GetDynamicObjectPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_OBJECT)
  668. #define GetDynamicPickupPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_PICKUP)
  669. #define GetDynamicCPPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_CP)
  670. #define GetDynamicRaceCPPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_RACE_CP)
  671. #define GetDynamicMapIconPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_MAP_ICON)
  672. #define GetDynamic3DTextPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_3D_TEXT_LABEL)
  673. #define GetDynamicAreaPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_AREA)
  674. #define GetDynamicActorPoolSize() Streamer_GetUpperBound(STREAMER_TYPE_ACTOR)
  675. //Foreach
  676. #define ForDynamicObjects(%1) for(new STREAMER_TAG_OBJECT %1 = STREAMER_TAG_OBJECT 1, STREAMER_TAG_OBJECT p_%1 = STREAMER_TAG_OBJECT GetDynamicObjectPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_OBJECT ((_:%1)+=1))
  677. #define ForDynamicPickups(%1) for(new STREAMER_TAG_PICKUP %1 = STREAMER_TAG_PICKUP 1, STREAMER_TAG_PICKUP p_%1 = STREAMER_TAG_PICKUP GetDynamicPickupPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_PICKUP ((_:%1)+=1))
  678. #define ForDynamicCPs(%1) for(new STREAMER_TAG_CP %1 = STREAMER_TAG_CP 1, STREAMER_TAG_CP p_%1 = STREAMER_TAG_CP GetDynamicCPPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_CP ((_:%1)+=1))
  679. #define ForDynamicRaceCPs(%1) for(new STREAMER_TAG_RACE_CP %1 = STREAMER_TAG_RACE_CP 1, STREAMER_TAG_RACE_CP p_%1 = STREAMER_TAG_RACE_CP GetDynamicRaceCPPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_RACE_CP ((_:%1)+=1))
  680. #define ForDynamicMapIcons(%1) for(new STREAMER_TAG_MAP_ICON %1 = STREAMER_TAG_MAP_ICON 1, STREAMER_TAG_MAP_ICON p_%1 = STREAMER_TAG_MAP_ICON GetDynamicMapIconPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_MAP_ICON ((_:%1)+=1))
  681. #define ForDynamic3DTextLabels(%1) for(new STREAMER_TAG_3D_TEXT_LABEL %1 = STREAMER_TAG_3D_TEXT_LABEL 1, STREAMER_TAG_3D_TEXT_LABEL p_%1 = STREAMER_TAG_3D_TEXT_LABEL GetDynamic3DTextPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_3D_TEXT_LABEL ((_:%1)+=1))
  682. #define ForDynamicAreas(%1) for(new STREAMER_TAG_AREA %1 = STREAMER_TAG_AREA 1, STREAMER_TAG_AREA p_%1 = STREAMER_TAG_AREA GetDynamicAreaPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_AREA ((_:%1)+=1))
  683. #define ForDynamicActors(%1) for(new STREAMER_TAG_ACTOR %1 = STREAMER_TAG_ACTOR 1, STREAMER_TAG_ACTOR p_%1 = STREAMER_TAG_ACTOR GetDynamicActorPoolSize(); _:%1 <= _:p_%1; STREAMER_TAG_ACTOR ((_:%1)+=1))
  684. //GetNearestVisibleItem
  685. #define GetNearestVisibleObject(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_OBJECT)
  686. #define GetNearestVisiblePickup(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_PICKUP)
  687. #define GetNearestVisibleCP(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_CP)
  688. #define GetNearestVisibleRaceCP(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_RACE_CP)
  689. #define GetNearestVisibleMapIcon(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_MAP_ICON)
  690. #define GetNearestVisible3DText(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_3D_TEXT_LABEL)
  691. #define GetNearestVisibleArea(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_AREA)
  692. #define GetNearestVisibleActor(%0) GetNearestVisibleItem((%0),STREAMER_TYPE_ACTOR)
  693. #define GetStreamerSpecActiveCount() GetSVarInt("ADM:StreamerSpec:ACTIVE")
  694. //extra names
  695. #define SetDynamic3DTextAttachPlayer AttachDynamic3DTextToPlayer
  696. #define SetDynamic3DTextAttachVehicle AttachDynamic3DTextToVehicle
  697. #define ResetDynamicObjectMaterial RemoveDynamicObjectMaterial
  698. #define ResetDynamicObjectMaterialAll RemoveDynamicObjectMaterialAll
  699. //Datagram
  700. StreamerSpec::Function:: GetStreamerDatagram(type,STREAMER_ALL_TAGS itemid,data[]){
  701. new address[32];
  702. format(address,sizeof(address),"Stream:%d:%d",type,_:itemid);
  703. GetSVarString(address,data,MAX_STREAM_SIZE);
  704. }
  705. StreamerSpec::Function:: SetStreamerDatagram(type,STREAMER_ALL_TAGS itemid,data[]){
  706. new address[32];
  707. format(address,sizeof(address),"Stream:%d:%d",type,_:itemid);
  708. SetSVarString(address,data);
  709. }
  710. StreamerSpec::Function:: RemoveStreamDatagram(type,STREAMER_ALL_TAGS itemid){
  711. new address[32];
  712. format(address,sizeof(address),"Stream:%d:%d",type,_:itemid);
  713. DeleteSVar(address);
  714. }
  715. StreamerSpec::Function:: bool:IsSetStreamerDatagram(type,STREAMER_ALL_TAGS itemid){
  716. new stream_data[MAX_STREAM_SIZE];
  717. GetStreamerDatagram(type,_:itemid,stream_data);
  718. if(isnull(stream_data)) return false;
  719. return true;
  720. }
  721. StreamerSpec::Function:: bool:IsValidStreamer(version){
  722. return (GetStreamerVersion() == version);
  723. }
  724. StreamerSpec::Function:: GetStreamerVersionName(name[], value = GET_STREAMER_VERSION, maxdest = sizeof name){
  725. if(value == GET_STREAMER_VERSION) value = GetStreamerVersion();
  726. new ver_str[10];
  727. format(ver_str,sizeof(ver_str),"%03x",value);
  728. format(name,maxdest,"%d.%d.%d",(ver_str[0]-48),(ver_str[1]-48),(ver_str[2]-48));
  729. }
  730. StreamerSpec::Function:: SetDynamicObjectPosAndRot(STREAMER_TAG_OBJECT objectid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz){
  731. SetDynamicObjectPos(objectid,x,y,z);
  732. SetDynamicObjectRot(objectid,rx,ry,rz);
  733. }
  734. StreamerSpec::Function:: GetDynamicObjectPosAndRot(STREAMER_TAG_OBJECT objectid,&Float:x,&Float:y,&Float:z,&Float:rx,&Float:ry,&Float:rz){
  735. GetDynamicObjectPos(objectid,x,y,z);
  736. GetDynamicObjectRot(objectid,rx,ry,rz);
  737. }
  738. StreamerSpec::Function:: SetObjectPosAndRot(objectid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz){
  739. SetObjectPos(objectid,x,y,z);
  740. SetObjectRot(objectid,rx,ry,rz);
  741. }
  742. StreamerSpec::Function:: GetObjectPosAndRot(objectid,&Float:x,&Float:y,&Float:z,&Float:rx,&Float:ry,&Float:rz){
  743. GetObjectPos(objectid,x,y,z);
  744. GetObjectRot(objectid,rx,ry,rz);
  745. }
  746. StreamerSpec::Function:: CountObjects(){
  747. new count = 0;
  748. for(new i = 0; i < MAX_OBJECTS; i++){
  749. if(IsValidObject(i)) count++;
  750. }
  751. return count;
  752. }
  753. StreamerSpec::Function:: DestroyObjects(){
  754. new count = 0;
  755. for(new i = 0; i < MAX_OBJECTS; i++){
  756. if(IsValidObject(i)){
  757. DestroyObject(i);
  758. count++;
  759. }
  760. }
  761. return count;
  762. }
  763. StreamerSpec::Function:: CountVehicles(){
  764. new count = 0;
  765. for(new i = 0, j = GetVehiclePoolSize(); i <= j; i++){
  766. if(IsValidVehicle(i)) count++;
  767. }
  768. return count;
  769. }
  770. StreamerSpec::Function:: DestroyVehicles(){
  771. new count = 0;
  772. for(new i = 0, j = GetVehiclePoolSize(); i <= j; i++){
  773. if(IsValidVehicle(i)){
  774. DestroyVehicle(i);
  775. count++;
  776. }
  777. }
  778. return count;
  779. }
  780. StreamerSpec::Function:: GangZoneDestroyAll(){
  781. for(new i = 0; i < MAX_GANG_ZONES; i++){
  782. GangZoneDestroy(i);
  783. }
  784. }
  785. StreamerSpec::Function:: CountPlayerObjects(playerid,bool:streamer = false){
  786. new count = 0;
  787. for(new i = 0; i < MAX_OBJECTS; i++){
  788. if(streamer){
  789. if(IsValidPlayerObject(playerid,i)){
  790. count++;
  791. }
  792. } else {
  793. if(Streamer_GetItemStreamerID(playerid,STREAMER_TYPE_OBJECT,i) == INVALID_STREAMER_ID){
  794. if(IsValidPlayerObject(playerid,i)){
  795. count++;
  796. }
  797. }
  798. }
  799. }
  800. return count;
  801. }
  802. StreamerSpec::Function:: DestroyPlayerObjects(playerid,bool:streamer = false){
  803. new count = 0;
  804. for(new i = 0; i < MAX_OBJECTS; i++){
  805. if(streamer){
  806. if(IsValidPlayerObject(playerid,i)){
  807. DestroyPlayerObject(playerid,i);
  808. count++;
  809. }
  810. } else {
  811. if(Streamer_GetItemStreamerID(playerid,STREAMER_TYPE_OBJECT,i) == INVALID_STREAMER_ID){
  812. if(IsValidPlayerObject(playerid,i)){
  813. DestroyPlayerObject(playerid,i);
  814. count++;
  815. }
  816. }
  817. }
  818. }
  819. return count;
  820. }
  821. StreamerSpec::Function:: RebuildDynamicObject(STREAMER_TAG_OBJECT objectid,modelid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz,worldid = -1,interiorid = -1,playerid = -1,Float:streamdistance = STREAMER_OBJECT_SD,Float:drawdistance = STREAMER_OBJECT_DD,areaid = -1,priority = 0){
  822. if(!IsValidDynamicObject(objectid)) return 0;
  823. if(IsDynamicObjectMoving(objectid)) StopDynamicObject(objectid);
  824. SetDynamicObjectPosAndRot(objectid,x,y,z,rx,ry,rz);
  825. SetDynamicObjectModel(objectid,modelid);
  826. SetDynamicObjectVW(objectid,worldid);
  827. SetDynamicObjectINT(objectid,interiorid);
  828. SetDynamicObjectSD(objectid,streamdistance);
  829. SetDynamicObjectDD(objectid,drawdistance);
  830. SetDynamicObjectArea(objectid,areaid);
  831. SetDynamicObjectPriority(objectid,priority);
  832. return 1;
  833. }
  834. StreamerSpec::Function:: bool:IsPointInArea(Float:x,Float:y,Float:z,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz){
  835. if((x >= minx && x <= maxx) && (y >= miny && y <= maxy) && (z >= minz && z <= maxz)) return true;
  836. return false;
  837. }
  838. StreamerSpec::Function:: bool:IsPointInAreaEx(Float:x,Float:y,Float:z,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz,vw1 = -1,int1 = -1,vw2 = -1,int2 = -1){
  839. if((x >= minx && x <= maxx) && (y >= miny && y <= maxy) && (z >= minz && z <= maxz) && (vw1 == vw2) && (int1 == int2)) return true;
  840. return false;
  841. }
  842. StreamerSpec::Function:: DestroyDynamicObjectsInCube(Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz,worldid = -1,interiorid = -1){
  843. new count = 0,Float:piox,Float:pioy,Float:pioz,pioVW,pioINT;
  844. ForDynamicObjects(i){
  845. if(IsValidDynamicObject(i)){
  846. GetDynamicObjectPos(i,piox,pioy,pioz);
  847. pioVW = GetDynamicObjectVW(i);
  848. pioINT = GetDynamicObjectINT(i);
  849. if(IsPointInArea(piox,pioy,pioz,minx,miny,minz,maxx,maxy,maxz)){
  850. if(((worldid == pioVW) || (worldid == -1)) && (interiorid == pioINT) || (interiorid == -1)){
  851. if(IsDynamicObjectMoving(i)) StopDynamicObject(i);
  852. DestroyDynamicObject(i);
  853. count++;
  854. }
  855. }
  856. }
  857. }
  858. return count;
  859. }
  860. StreamerSpec::Function:: DestroyDynamicObjectsInCubeFM(modelid,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz,worldid = -1,interiorid = -1){
  861. new count = 0,Float:piox,Float:pioy,Float:pioz,pioVW,pioINT;
  862. ForDynamicObjects(i){
  863. if(IsValidDynamicObject(i)){
  864. GetDynamicObjectPos(i,piox,pioy,pioz);
  865. pioVW = GetDynamicObjectVW(i);
  866. pioINT = GetDynamicObjectINT(i);
  867. if(IsPointInArea(piox,pioy,pioz,minx,miny,minz,maxx,maxy,maxz)){
  868. if(((worldid == pioVW) || (worldid == -1)) && ((interiorid == pioINT) || (interiorid == -1)) && (modelid == GetDynamicObjectModel(i))){
  869. if(IsDynamicObjectMoving(i)) StopDynamicObject(i);
  870. DestroyDynamicObject(i);
  871. count++;
  872. }
  873. }
  874. }
  875. }
  876. return count;
  877. }
  878. StreamerSpec::Function:: DestroyVehicleDynamicObject(vehicleid){
  879. new count = 0;
  880. ForDynamicObjects(i){
  881. if(IsValidDynamicObject(i)){
  882. if(Streamer_GetIntData(STREAMER_TYPE_OBJECT,i,E_STREAMER_ATTACHED_VEHICLE) == vehicleid){
  883. DestroyDynamicObject(i);
  884. count++;
  885. }
  886. }
  887. }
  888. return count;
  889. }
  890. StreamerSpec::Function:: DeattachVehicleDynamicObject(vehicleid){
  891. new count = 0;
  892. ForDynamicObjects(i){
  893. if(IsValidDynamicObject(i)){
  894. if(Streamer_GetIntData(STREAMER_TYPE_OBJECT,i,E_STREAMER_ATTACHED_VEHICLE) == vehicleid){
  895. Streamer_SetIntData(STREAMER_TYPE_OBJECT,i,E_STREAMER_ATTACHED_VEHICLE,INVALID_VEHICLE_ID);
  896. count++;
  897. }
  898. }
  899. }
  900. return count;
  901. }
  902. StreamerSpec::Function:: DeattachPlayerDynamicObject(playerid){
  903. new count = 0;
  904. ForDynamicObjects(i){
  905. if(IsValidDynamicObject(i)){
  906. if(Streamer_GetIntData(STREAMER_TYPE_OBJECT,i,E_STREAMER_ATTACHED_PLAYER) == playerid){
  907. Streamer_SetIntData(STREAMER_TYPE_OBJECT,i,E_STREAMER_ATTACHED_PLAYER,INVALID_PLAYER_ID);
  908. count++;
  909. }
  910. }
  911. }
  912. return count;
  913. }
  914. StreamerSpec::Function:: DestroyPlayerDynamicObject(playerid){
  915. new count = 0;
  916. ForDynamicObjects(i){
  917. if(IsValidDynamicObject(i)){
  918. if(Streamer_GetIntData(STREAMER_TYPE_OBJECT,i,E_STREAMER_ATTACHED_PLAYER) == playerid){
  919. DestroyDynamicObject(i);
  920. count++;
  921. }
  922. }
  923. }
  924. return count;
  925. }
  926. StreamerSpec::Function:: GetDynamicCPPos(STREAMER_TAG_CP checkpointid,&Float:x,&Float:y,&Float:z){
  927. Streamer_GetFloatData(STREAMER_TYPE_CP,checkpointid,E_STREAMER_X,x);
  928. Streamer_GetFloatData(STREAMER_TYPE_CP,checkpointid,E_STREAMER_Y,y);
  929. Streamer_GetFloatData(STREAMER_TYPE_CP,checkpointid,E_STREAMER_Z,z);
  930. }
  931. StreamerSpec::Function:: SetDynamicCPPos(STREAMER_TAG_CP checkpointid,Float:x,Float:y,Float:z){
  932. Streamer_SetFloatData(STREAMER_TYPE_CP,checkpointid,E_STREAMER_X,x);
  933. Streamer_SetFloatData(STREAMER_TYPE_CP,checkpointid,E_STREAMER_Y,y);
  934. Streamer_SetFloatData(STREAMER_TYPE_CP,checkpointid,E_STREAMER_Z,z);
  935. }
  936. StreamerSpec::Function:: GetDynamicRaceCPPos(STREAMER_TAG_RACE_CP checkpointid,&Float:x,&Float:y,&Float:z){
  937. Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_X,x);
  938. Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_Y,y);
  939. Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_Z,z);
  940. }
  941. StreamerSpec::Function:: SetDynamicRaceCPPos(STREAMER_TAG_RACE_CP checkpointid,Float:x,Float:y,Float:z){
  942. Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_X,x);
  943. Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_Y,y);
  944. Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_Z,z);
  945. }
  946. StreamerSpec::Function:: GetDynamicRaceCPNext(STREAMER_TAG_RACE_CP checkpointid,&Float:nextx,&Float:nexty,&Float:nextz){
  947. Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_NEXT_X,nextx);
  948. Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_NEXT_Y,nexty);
  949. Streamer_GetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_NEXT_Z,nextz);
  950. }
  951. StreamerSpec::Function:: SetDynamicRaceCPNext(STREAMER_TAG_RACE_CP checkpointid,Float:nextx,Float:nexty,Float:nextz){
  952. Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_NEXT_X,nextx);
  953. Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_NEXT_Y,nexty);
  954. Streamer_SetFloatData(STREAMER_TYPE_RACE_CP,checkpointid,E_STREAMER_NEXT_Z,nextz);
  955. }
  956. StreamerSpec::Function:: GetDynamicObjectMovePos(STREAMER_TAG_OBJECT objectid,&Float:x,&Float:y,&Float:z){
  957. Streamer_GetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_X,x);
  958. Streamer_GetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_Y,y);
  959. Streamer_GetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_Z,z);
  960. }
  961. StreamerSpec::Function:: GetDynamicObjectMoveRot(STREAMER_TAG_OBJECT objectid,&Float:rx,&Float:ry,&Float:rz){
  962. Streamer_GetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_R_X,rx);
  963. Streamer_GetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_R_Y,ry);
  964. Streamer_GetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_R_Z,rz);
  965. }
  966. StreamerSpec::Function:: SetDynamicObjectMovePos(STREAMER_TAG_OBJECT objectid,Float:x,Float:y,Float:z){
  967. Streamer_SetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_X,x);
  968. Streamer_SetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_Y,y);
  969. Streamer_SetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_Z,z);
  970. }
  971. StreamerSpec::Function:: SetDynamicObjectMoveRot(STREAMER_TAG_OBJECT objectid,Float:rx = -1000.0,Float:ry = -1000.0,Float:rz = -1000.0){
  972. Streamer_SetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_R_X,rx);
  973. Streamer_SetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_R_Y,ry);
  974. Streamer_SetFloatData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MOVE_R_Z,rz);
  975. }
  976. StreamerSpec::Function:: GetDynamicPickupPos(STREAMER_TAG_PICKUP pickupid,&Float:x,&Float:y,&Float:z){
  977. Streamer_GetFloatData(STREAMER_TYPE_PICKUP,pickupid,E_STREAMER_X,x);
  978. Streamer_GetFloatData(STREAMER_TYPE_PICKUP,pickupid,E_STREAMER_Y,y);
  979. Streamer_GetFloatData(STREAMER_TYPE_PICKUP,pickupid,E_STREAMER_Z,z);
  980. }
  981. StreamerSpec::Function:: SetDynamicPickupPos(STREAMER_TAG_PICKUP pickupid,Float:x,Float:y,Float:z){
  982. Streamer_SetFloatData(STREAMER_TYPE_PICKUP,pickupid,E_STREAMER_X,x);
  983. Streamer_SetFloatData(STREAMER_TYPE_PICKUP,pickupid,E_STREAMER_Y,y);
  984. Streamer_SetFloatData(STREAMER_TYPE_PICKUP,pickupid,E_STREAMER_Z,z);
  985. }
  986. StreamerSpec::Function:: GetDynamicMapIconPos(STREAMER_TAG_MAP_ICON iconid,&Float:x,&Float:y,&Float:z){
  987. Streamer_GetFloatData(STREAMER_TYPE_MAP_ICON,iconid,E_STREAMER_X,x);
  988. Streamer_GetFloatData(STREAMER_TYPE_MAP_ICON,iconid,E_STREAMER_Y,y);
  989. Streamer_GetFloatData(STREAMER_TYPE_MAP_ICON,iconid,E_STREAMER_Z,z);
  990. }
  991. StreamerSpec::Function:: SetDynamicMapIconPos(STREAMER_TAG_MAP_ICON iconid,Float:x,Float:y,Float:z){
  992. Streamer_SetFloatData(STREAMER_TYPE_MAP_ICON,iconid,E_STREAMER_X,x);
  993. Streamer_SetFloatData(STREAMER_TYPE_MAP_ICON,iconid,E_STREAMER_Y,y);
  994. Streamer_SetFloatData(STREAMER_TYPE_MAP_ICON,iconid,E_STREAMER_Z,z);
  995. }
  996. StreamerSpec::Function:: GetDynamic3DTextPos(STREAMER_TAG_3D_TEXT_LABEL id,&Float:x,&Float:y,&Float:z){
  997. Streamer_GetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,id,E_STREAMER_X,x);
  998. Streamer_GetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,id,E_STREAMER_Y,y);
  999. Streamer_GetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,id,E_STREAMER_Z,z);
  1000. }
  1001. StreamerSpec::Function:: SetDynamic3DTextPos(STREAMER_TAG_3D_TEXT_LABEL id,Float:x,Float:y,Float:z){
  1002. Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,id,E_STREAMER_X,x);
  1003. Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,id,E_STREAMER_Y,y);
  1004. Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL,id,E_STREAMER_Z,z);
  1005. }
  1006. StreamerSpec::Function:: GetDynamicCirclePos(STREAMER_TAG_AREA areaid,&Float:x,&Float:y){
  1007. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_X,x);
  1008. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Y,y);
  1009. }
  1010. StreamerSpec::Function:: SetDynamicCirclePos(STREAMER_TAG_AREA areaid,Float:x,Float:y){
  1011. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_X,x);
  1012. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Y,y);
  1013. }
  1014. StreamerSpec::Function:: GetDynamicCylinderPos(STREAMER_TAG_AREA areaid,&Float:x,&Float:y,&Float:minz,&Float:maxz){
  1015. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_X,x);
  1016. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Y,y);
  1017. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Z,minz);
  1018. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Z,maxz);
  1019. }
  1020. StreamerSpec::Function:: SetDynamicCylinderPos(STREAMER_TAG_AREA areaid,Float:x,Float:y,Float:minz,Float:maxz){
  1021. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_X,x);
  1022. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Y,y);
  1023. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Z,minz);
  1024. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Z,maxz);
  1025. }
  1026. StreamerSpec::Function:: GetDynamicSpherePos(STREAMER_TAG_AREA areaid,&Float:x,&Float:y,&Float:z){
  1027. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_X,x);
  1028. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Y,y);
  1029. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Z,z);
  1030. }
  1031. StreamerSpec::Function:: SetDynamicSpherePos(STREAMER_TAG_AREA areaid,Float:x,Float:y,Float:z){
  1032. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_X,x);
  1033. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Y,y);
  1034. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_Z,z);
  1035. }
  1036. StreamerSpec::Function:: GetDynamicCubePos(STREAMER_TAG_AREA areaid,&Float:minx,&Float:miny,&Float:minz,&Float:maxx,&Float:maxy,&Float:maxz){
  1037. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_X,minx);
  1038. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Y,miny);
  1039. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Z,minz);
  1040. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_X,maxx);
  1041. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Y,maxy);
  1042. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Z,maxz);
  1043. }
  1044. StreamerSpec::Function:: SetDynamicCubePos(STREAMER_TAG_AREA areaid,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz){
  1045. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_X,minx);
  1046. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Y,miny);
  1047. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Z,minz);
  1048. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_X,maxx);
  1049. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Y,maxy);
  1050. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Z,maxz);
  1051. }
  1052. StreamerSpec::Function:: GetDynamicRectanglePos(STREAMER_TAG_AREA areaid,&Float:minx,&Float:miny,&Float:maxx,&Float:maxy){
  1053. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_X,minx);
  1054. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Y,miny);
  1055. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_X,maxx);
  1056. Streamer_GetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Y,maxy);
  1057. }
  1058. StreamerSpec::Function:: SetDynamicRectanglePos(STREAMER_TAG_AREA areaid,Float:minx,Float:miny,Float:maxx,Float:maxy){
  1059. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_X,minx);
  1060. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MIN_Y,miny);
  1061. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_X,maxx);
  1062. Streamer_SetFloatData(STREAMER_TYPE_AREA,areaid,E_STREAMER_MAX_Y,maxy);
  1063. }
  1064. StreamerSpec::Function:: DestroyDynamicObjectComponent(STREAMER_TAG_OBJECT objectid,type){
  1065. new count = 0;
  1066. switch(type){
  1067. case STREAMER_TYPE_OBJECT: {
  1068. ForDynamicObjects(i){
  1069. if(Streamer_GetIntData(type,i,E_STREAMER_ATTACHED_OBJECT) == _:objectid){
  1070. DestroyDynamicObject(i);
  1071. count++;
  1072. }
  1073. }
  1074. }
  1075. case STREAMER_TYPE_AREA: {
  1076. ForDynamicAreas(i){
  1077. if(Streamer_GetIntData(type,i,E_STREAMER_ATTACHED_OBJECT) == _:objectid){
  1078. DestroyDynamicArea(i);
  1079. count++;
  1080. }
  1081. }
  1082. }
  1083. default: return INVALID_STREAMER_COMPONENT;
  1084. }
  1085. return count;
  1086. }
  1087. StreamerSpec::Function:: DeattachDynamicObjectComponent(STREAMER_TAG_OBJECT objectid,type){
  1088. new count = 0;
  1089. switch(type){
  1090. case STREAMER_TYPE_OBJECT: {
  1091. ForDynamicObjects(i){
  1092. if(Streamer_GetIntData(type,i,E_STREAMER_ATTACHED_OBJECT) == _:objectid){
  1093. Streamer_SetIntData(type,i,E_STREAMER_ATTACHED_OBJECT,INVALID_STREAMER_ID);
  1094. count++;
  1095. }
  1096. }
  1097. }
  1098. case STREAMER_TYPE_AREA: {
  1099. ForDynamicAreas(i){
  1100. if(Streamer_GetIntData(type,i,E_STREAMER_ATTACHED_OBJECT) == _:objectid){
  1101. Streamer_SetIntData(type,i,E_STREAMER_ATTACHED_OBJECT,INVALID_VEHICLE_ID);
  1102. count++;
  1103. }
  1104. }
  1105. }
  1106. default: return INVALID_STREAMER_COMPONENT;
  1107. }
  1108. return count;
  1109. }
  1110. StreamerSpec::Function:: GetDynamicObjectMoveTime(STREAMER_TAG_OBJECT objectid,&objstate,&rtime=0){
  1111. if(!IsValidDynamicObject(objectid)){
  1112. objstate = MOVE_OBJECT_STATE_INVALID;
  1113. rtime = 0;
  1114. return rtime;
  1115. } else if(IsDynamicObjectMoving(objectid)){
  1116. new Float:piox,Float:pioy,Float:pioz,Float:piotx,Float:pioty,Float:piotz,Float:objspeed;
  1117. GetDynamicObjectPos(objectid,piox,pioy,pioz);
  1118. GetDynamicObjectMovePos(objectid,piotx,pioty,piotz);
  1119. GetDynamicObjectMoveSpeed(objectid,objspeed);
  1120. rtime = floatround((VectorSize(piox-piotx,pioy-pioty,pioz-piotz)/objspeed)*1000.0);
  1121. objstate = MOVE_OBJECT_STATE_MOVED;
  1122. return rtime;
  1123. } else {
  1124. objstate = MOVE_OBJECT_STATE_STOP;
  1125. rtime = 0;
  1126. return rtime;
  1127. }
  1128. }
  1129. StreamerSpec::Function:: UpdateAllDynamicObjects(){
  1130. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1131. Streamer_Update(i,STREAMER_TYPE_OBJECT);
  1132. }
  1133. }
  1134. StreamerSpec::Function:: UpdateAllDynamicPickups(){
  1135. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1136. Streamer_Update(i,STREAMER_TYPE_PICKUP);
  1137. }
  1138. }
  1139. StreamerSpec::Function:: UpdateAllDynamicCPs(){
  1140. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1141. Streamer_Update(i,STREAMER_TYPE_CP);
  1142. }
  1143. }
  1144. StreamerSpec::Function:: UpdateAllDynamicRaceCPs(){
  1145. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1146. Streamer_Update(i,STREAMER_TYPE_RACE_CP);
  1147. }
  1148. }
  1149. StreamerSpec::Function:: UpdateAllDynamicMapIcons(){
  1150. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1151. Streamer_Update(i,STREAMER_TYPE_MAP_ICON);
  1152. }
  1153. }
  1154. StreamerSpec::Function:: UpdateAllDynamic3DTextLabels(){
  1155. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1156. Streamer_Update(i,STREAMER_TYPE_3D_TEXT_LABEL);
  1157. }
  1158. }
  1159. StreamerSpec::Function:: UpdateAllDynamicAreas(){
  1160. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1161. Streamer_Update(i,STREAMER_TYPE_AREA);
  1162. }
  1163. }
  1164. StreamerSpec::Function:: UpdateAllDynamicActors(){
  1165. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1166. Streamer_Update(i,STREAMER_TYPE_ACTOR);
  1167. }
  1168. }
  1169. #if defined SSpec_StreamerVehicle
  1170. StreamerSpec::Function:: UpdateAllDynamicVehicles(){
  1171. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1172. Streamer_Update(i,STREAMER_TYPE_VEHICLE);
  1173. }
  1174. }
  1175. #endif
  1176. StreamerSpec::Function:: UpdateAllDynamicElements(){
  1177. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  1178. Streamer_Update(i);
  1179. }
  1180. }
  1181. StreamerSpec::Function:: RemoveDynamicObjectMaterial(STREAMER_TAG_OBJECT objectid,materialindex){
  1182. SetDynamicObjectMaterial(objectid,materialindex,0,"","",0);
  1183. SetDynamicObjectModel(objectid,GetDynamicObjectModel(objectid));
  1184. }
  1185. StreamerSpec::Function:: RemoveDynamicObjectMaterialAll(STREAMER_TAG_OBJECT objectid){
  1186. for(new i = 0; i < 16; i++){
  1187. if(IsDynamicObjectMaterialUsed(objectid,i)){
  1188. SetDynamicObjectMaterial(objectid,i,0,"","",0);
  1189. }
  1190. }
  1191. SetDynamicObjectModel(objectid,GetDynamicObjectModel(objectid));
  1192. }
  1193. StreamerSpec::Function:: CheckStreamerVersion(){
  1194. if(!IsValidStreamer(GetValidStreamerVersion())){
  1195. new str1[32], str2[32];
  1196. GetStreamerVersionName(str1,GetStreamerVersion());
  1197. GetStreamerVersionName(str2,GetValidStreamerVersion());
  1198. if(GetSVarInt("ADM:Logging:Disable") == 0){
  1199. printf("[ADM] Error: Your Streamer %s It is not compatible with this version Streamer Functions, update your Streamer to %s",str1,str2);
  1200. }
  1201. }
  1202. }
  1203. StreamerSpec::Function:: GetNearestVisibleItem(playerid,type){
  1204. new Float:x, Float:y, Float:z, max_element, tmp_item, itemid = INVALID_STREAMER_ID,
  1205. Float:min_radius = 20000.0, Float:distance, idx_max = 0, idx = 0;
  1206. GetPlayerPos(playerid,x,y,z);
  1207. idx_max = Streamer_CountVisibleItems(playerid,type,1);
  1208. switch(type){
  1209. case STREAMER_TYPE_OBJECT, STREAMER_TYPE_PICKUP, STREAMER_TYPE_MAP_ICON, STREAMER_TYPE_3D_TEXT_LABEL, STREAMER_TYPE_ACTOR: {
  1210. max_element = Streamer_GetVisibleItems(type,playerid);
  1211. while(idx <= max_element && idx_max > 0){
  1212. if((tmp_item = Streamer_GetItemStreamerID(playerid,type,idx)) != INVALID_STREAMER_ID){
  1213. idx_max--;
  1214. Streamer_GetDistanceToItem(x,y,z,type,tmp_item,distance,3);
  1215. if(distance < min_radius){
  1216. itemid = tmp_item;
  1217. min_radius = distance;
  1218. }
  1219. }
  1220. idx++;
  1221. }
  1222. }
  1223. #if defined SSpec_StreamerVehicle
  1224. case STREAMER_TYPE_VEHICLE: {
  1225. max_element = Streamer_GetVisibleItems(type,playerid);
  1226. while(idx <= max_element && idx_max > 0){
  1227. if((tmp_item = Streamer_GetItemStreamerID(playerid,type,idx)) != INVALID_STREAMER_ID){
  1228. idx_max--;
  1229. Streamer_GetDistanceToItem(x,y,z,type,tmp_item,distance,3);
  1230. if(distance < min_radius){
  1231. itemid = tmp_item;
  1232. min_radius = distance;
  1233. }
  1234. }
  1235. idx++;
  1236. }
  1237. }
  1238. #endif
  1239. case STREAMER_TYPE_CP: {
  1240. itemid = GetPlayerVisibleDynamicCP(playerid);
  1241. }
  1242. case STREAMER_TYPE_RACE_CP: {
  1243. itemid = GetPlayerVisibleDynamicRaceCP(playerid);
  1244. }
  1245. case STREAMER_TYPE_AREA: {
  1246. max_element = GetDynamicAreaPoolSize(), idx = 1;
  1247. while(idx <= max_element && idx_max > 0){
  1248. if(IsValidDynamicArea(STREAMER_TAG_AREA idx)){
  1249. if(Streamer_IsItemVisible(playerid,type,idx)){
  1250. idx_max--;
  1251. Streamer_GetDistanceToItem(x,y,z,type,tmp_item,distance,3);
  1252. if(distance < min_radius){
  1253. itemid = tmp_item;
  1254. min_radius = distance;
  1255. }
  1256. }
  1257. }
  1258. idx++;
  1259. }
  1260. }
  1261. default: return INVALID_STREAMER_ID;
  1262. }
  1263. return itemid;
  1264. }
  1265. #define GetDynamicCuboidPos GetDynamicCubePos
  1266. #define SetDynamicCuboidPos SetDynamicCubePos
  1267. /****************************************************************************************************
  1268. * *
  1269. * Fix Destroy Object Hook *
  1270. * *
  1271. ****************************************************************************************************/
  1272. #if !defined DISABLE_STREAMER_SPEC_FIXES
  1273. //Hook: DestroyDynamicObject
  1274. StreamerSpec::Function:: SF_DestroyDynamicObject(&STREAMER_TAG_OBJECT objectid){
  1275. new dobj = DestroyDynamicObject(objectid);
  1276. objectid = INVALID_DYNAMIC_OBJECT_ID;
  1277. return dobj;
  1278. }
  1279. #if defined _ALS_DestroyDynamicObject
  1280. #undef DestroyDynamicObject
  1281. #else
  1282. #define _ALS_DestroyDynamicObject
  1283. #endif
  1284. #define DestroyDynamicObject SF_DestroyDynamicObject
  1285. //Hook: DestroyDynamicPickup
  1286. StreamerSpec::Function:: SF_DestroyDynamicPickup(&STREAMER_TAG_PICKUP pickupid){
  1287. new dobj = DestroyDynamicPickup(pickupid);
  1288. pickupid = INVALID_DYNAMIC_PICKUP_ID;
  1289. return dobj;
  1290. }
  1291. #if defined _ALS_DestroyDynamicPickup
  1292. #undef DestroyDynamicPickup
  1293. #else
  1294. #define _ALS_DestroyDynamicPickup
  1295. #endif
  1296. #define DestroyDynamicPickup SF_DestroyDynamicPickup
  1297. //Hook: DestroyDynamicCP
  1298. StreamerSpec::Function:: SF_DestroyDynamicCP(&STREAMER_TAG_CP checkpointid){
  1299. new dobj = DestroyDynamicCP(checkpointid);
  1300. checkpointid = INVALID_DYNAMIC_CP_ID;
  1301. return dobj;
  1302. }
  1303. #if defined _ALS_DestroyDynamicCP
  1304. #undef DestroyDynamicCP
  1305. #else
  1306. #define _ALS_DestroyDynamicCP
  1307. #endif
  1308. #define DestroyDynamicCP SF_DestroyDynamicCP
  1309. //Hook: DestroyDynamicRaceCP
  1310. StreamerSpec::Function:: SF_DestroyDynamicRaceCP(&STREAMER_TAG_RACE_CP checkpointid){
  1311. new dobj = DestroyDynamicRaceCP(checkpointid);
  1312. checkpointid = INVALID_DYNAMIC_RACE_CP_ID;
  1313. return dobj;
  1314. }
  1315. #if defined _ALS_DestroyDynamicRaceCP
  1316. #undef DestroyDynamicRaceCP
  1317. #else
  1318. #define _ALS_DestroyDynamicRaceCP
  1319. #endif
  1320. #define DestroyDynamicRaceCP SF_DestroyDynamicRaceCP
  1321. //Hook: DestroyDynamicMapIcon
  1322. StreamerSpec::Function:: SF_DestroyDynamicMapIcon(&STREAMER_TAG_MAP_ICON iconid){
  1323. new dobj = DestroyDynamicMapIcon(iconid);
  1324. iconid = INVALID_DYNAMIC_MAP_ICON_ID;
  1325. return dobj;
  1326. }
  1327. #if defined _ALS_DestroyDynamicMapIcon
  1328. #undef DestroyDynamicMapIcon
  1329. #else
  1330. #define _ALS_DestroyDynamicMapIcon
  1331. #endif
  1332. #define DestroyDynamicMapIcon SF_DestroyDynamicMapIcon
  1333. //Hook: DestroyDynamic3DTextLabel
  1334. StreamerSpec::Function:: SF_DestroyDynamic3DTextLabel(&STREAMER_TAG_3D_TEXT_LABEL id){
  1335. new dobj = DestroyDynamic3DTextLabel(id);
  1336. id = INVALID_DYNAMIC_3D_TEXT_ID;
  1337. return dobj;
  1338. }
  1339. #if defined _ALS_DestroyDynamic3DTextLabel
  1340. #undef DestroyDynamic3DTextLabel
  1341. #else
  1342. #define _ALS_DestroyDynamic3DTextLabel
  1343. #endif
  1344. #define DestroyDynamic3DTextLabel SF_DestroyDynamic3DTextLabel
  1345. //Hook: DestroyDynamicArea
  1346. StreamerSpec::Function:: SF_DestroyDynamicArea(&STREAMER_TAG_AREA areaid){
  1347. new dobj = DestroyDynamicArea(areaid);
  1348. areaid = INVALID_DYNAMIC_AREA_ID;
  1349. return dobj;
  1350. }
  1351. #if defined _ALS_DestroyDynamicArea
  1352. #undef DestroyDynamicArea
  1353. #else
  1354. #define _ALS_DestroyDynamicArea
  1355. #endif
  1356. #define DestroyDynamicArea SF_DestroyDynamicArea
  1357. //Hook: DestroyDynamicActor
  1358. StreamerSpec::Function:: SF_DestroyDynamicActor(&STREAMER_TAG_ACTOR actorid){
  1359. new dobj = DestroyDynamicActor(actorid);
  1360. actorid = INVALID_DYNAMIC_ACTOR_ID;
  1361. return dobj;
  1362. }
  1363. #if defined _ALS_DestroyDynamicActor
  1364. #undef DestroyDynamicActor
  1365. #else
  1366. #define _ALS_DestroyDynamicActor
  1367. #endif
  1368. #define DestroyDynamicActor SF_DestroyDynamicActor
  1369. //Hook: AttachDynamicObjectToObject
  1370. StreamerSpec::Function:: SF_AttachDynamicObjectToObject(STREAMER_TAG_OBJECT objectid,attachtoid,Float:offsetx,Float:offsety,Float:offsetz,Float:rx,Float:ry,Float:rz,syncrotation = 1){
  1371. new dobj = AttachDynamicObjectToObject(objectid,attachtoid,offsetx,offsety,offsetz,rx,ry,rz,syncrotation);
  1372. if(GetDynamicObjectPriority(objectid) <= GetDynamicObjectPriority(attachtoid)){
  1373. SetDynamicObjectPriority(objectid,GetDynamicObjectPriority(attachtoid)+1);
  1374. }
  1375. return dobj;
  1376. }
  1377. #if defined _LS_AttachDynamicObjectToObject
  1378. #undef AttachDynamicObjectToObject
  1379. #else
  1380. #define _LS_AttachDynamicObjectToObject
  1381. #endif
  1382. #define AttachDynamicObjectToObject SF_AttachDynamicObjectToObject
  1383. //Hook: DestroyObject
  1384. StreamerSpec::Function:: SF_DestroyObject(&objectid){
  1385. new dobj = DestroyObject(objectid);
  1386. objectid = INVALID_OBJECT_ID;
  1387. return dobj;
  1388. }
  1389. #if defined _ALS_DestroyObject
  1390. #undef DestroyObject
  1391. #else
  1392. #define _ALS_DestroyObject
  1393. #endif
  1394. #define DestroyObject SF_DestroyObject
  1395. //Hook: DestroyPlayerObject
  1396. StreamerSpec::Function:: SF_DestroyPlayerObject(playerid,&objectid){
  1397. new dobj = DestroyPlayerObject(playerid,objectid);
  1398. objectid = INVALID_OBJECT_ID;
  1399. return dobj;
  1400. }
  1401. #if defined _ALS_DestroyPlayerObject
  1402. #undef DestroyPlayerObject
  1403. #else
  1404. #define _ALS_DestroyPlayerObject
  1405. #endif
  1406. #define DestroyPlayerObject SF_DestroyPlayerObject
  1407. //Hook: DestroyPickup
  1408. StreamerSpec::Function:: SF_DestroyPickup(&pickupid){
  1409. new dobj = DestroyPickup(pickupid);
  1410. pickupid = INVALID_PICKUP_ID;
  1411. return dobj;
  1412. }
  1413. #if defined _ALS_DestroyPickup
  1414. #undef DestroyPickup
  1415. #else
  1416. #define _ALS_DestroyPickup
  1417. #endif
  1418. #define DestroyPickup SF_DestroyPickup
  1419. //Hook: Delete3DTextLabel
  1420. StreamerSpec::Function:: SF_Delete3DTextLabel(&Text3D:id){
  1421. new dobj = Delete3DTextLabel(id);
  1422. id = Text3D:INVALID_3DTEXT_ID;
  1423. return dobj;
  1424. }
  1425. #if defined _ALS_Delete3DTextLabel
  1426. #undef Delete3DTextLabel
  1427. #else
  1428. #define _ALS_Delete3DTextLabel
  1429. #endif
  1430. #define Delete3DTextLabel SF_Delete3DTextLabel
  1431. //Hook: DeletePlayer3DTextLabel
  1432. StreamerSpec::Function:: SF_DeletePlayer3DTextLabel(playerid,&PlayerText3D:id){
  1433. new dobj = DeletePlayer3DTextLabel(playerid,id);
  1434. id = PlayerText3D:INVALID_3DTEXT_ID;
  1435. return dobj;
  1436. }
  1437. #if defined _ALS_DeletePlayer3DTextLabel
  1438. #undef DeletePlayer3DTextLabel
  1439. #else
  1440. #define _ALS_DeletePlayer3DTextLabel
  1441. #endif
  1442. #define DeletePlayer3DTextLabel SF_DeletePlayer3DTextLabel
  1443. #if defined SSpec_StreamerVehicle
  1444. //Hook: DestroyDynamicVehicle
  1445. StreamerSpec::Function:: SF_DestroyDynamicVehicle(&STREAMER_TAG_VEHICLE vehicleid){
  1446. new dobj = DestroyDynamicVehicle(vehicleid);
  1447. vehicleid = INVALID_DYNAMIC_VEHICLE_ID;
  1448. return dobj;
  1449. }
  1450. #if defined _ALS_DestroyDynamicVehicle
  1451. #undef DestroyDynamicVehicle
  1452. #else
  1453. #define _ALS_DestroyDynamicVehicle
  1454. #endif
  1455. #define DestroyDynamicVehicle SF_DestroyDynamicVehicle
  1456. #endif
  1457. #endif
  1458. /****************************************************************************************************
  1459. * *
  1460. * DynamicAntiArea Hook *
  1461. * *
  1462. ****************************************************************************************************/
  1463. #if defined OnPlayerEnterAntiArea
  1464. forward OnPlayerEnterAntiArea(playerid,STREAMER_TAG_AREA areaid);
  1465. #endif
  1466. #if defined OnPlayerLeaveAntiArea
  1467. forward OnPlayerLeaveAntiArea(playerid,STREAMER_TAG_AREA areaid);
  1468. #endif
  1469. //Hook: OnPlayerEnterDynamicArea
  1470. public OnPlayerEnterDynamicArea(playerid,STREAMER_TAG_AREA areaid){
  1471. #if defined OnPlayerLeaveAntiArea
  1472. OnPlayerLeaveAntiArea(playerid,areaid);
  1473. #endif
  1474. #if defined SSpec_OnPlayerEnterDynamicArea
  1475. SSpec_OnPlayerEnterDynamicArea(playerid,areaid);
  1476. #endif
  1477. return 1;
  1478. }
  1479. #if defined _ALS_OnPlayerEnterDynamicArea
  1480. #undef OnPlayerEnterDynamicArea
  1481. #else
  1482. #define _ALS_OnPlayerEnterDynamicArea
  1483. #endif
  1484. #define OnPlayerEnterDynamicArea SSpec_OnPlayerEnterDynamicArea
  1485. #if defined SSpec_OnPlayerEnterDynamicArea
  1486. forward SSpec_OnPlayerEnterDynamicArea(playerid,STREAMER_TAG_AREA areaid);
  1487. #endif
  1488. //Hook: OnPlayerLeaveDynamicArea
  1489. public OnPlayerLeaveDynamicArea(playerid,STREAMER_TAG_AREA areaid){
  1490. #if defined OnPlayerEnterAntiArea
  1491. OnPlayerEnterAntiArea(playerid,areaid);
  1492. #endif
  1493. #if defined SSpec_OnPlayerLeaveDynamicArea
  1494. SSpec_OnPlayerLeaveDynamicArea(playerid,areaid);
  1495. #endif
  1496. return 1;
  1497. }
  1498. #if defined _ALS_OnPlayerLeaveDynamicArea
  1499. #undef OnPlayerLeaveDynamicArea
  1500. #else
  1501. #define _ALS_OnPlayerLeaveDynamicArea
  1502. #endif
  1503. #define OnPlayerLeaveDynamicArea SSpec_OnPlayerLeaveDynamicArea
  1504. #if defined SSpec_OnPlayerLeaveDynamicArea
  1505. forward SSpec_OnPlayerLeaveDynamicArea(playerid,STREAMER_TAG_AREA areaid);
  1506. #endif
  1507. /****************************************************************************************************
  1508. * *
  1509. * OnPlayerWeaponShot for Streamer Object *
  1510. * *
  1511. ****************************************************************************************************/
  1512. #if defined ENABLE_BULLET_DYNAMIC_OBJECT
  1513. //Hook: OnPlayerShootDynamicObject
  1514. public OnPlayerShootDynamicObject(playerid,weaponid,STREAMER_TAG_OBJECT objectid,Float:x,Float:y,Float:z){
  1515. new Float:ox, Float:oy, Float:oz, Float:tx, Float:ty, Float:tz;
  1516. GetPlayerLastShotVectors(playerid,ox,oy,oz,tx,ty,tz);
  1517. #if defined OnPlayerWeaponShot
  1518. OnPlayerWeaponShot(playerid,weaponid,BULLET_HIT_TYPE_DYNAMIC_OBJECT,0,tx,ty,tz);
  1519. #endif
  1520. #if defined SSpec_OnShootDynamicObject
  1521. SSpec_OnShootDynamicObject(playerid,weaponid,objectid,x,y,z);
  1522. #endif
  1523. return 1;
  1524. }
  1525. #if defined _ALS_OnPlayerShootDynamicObject
  1526. #undef OnPlayerShootDynamicObject
  1527. #else
  1528. #define _ALS_OnPlayerShootDynamicObject
  1529. #endif
  1530. #define OnPlayerShootDynamicObject SSpec_OnShootDynamicObject
  1531. #if defined SSpec_OnShootDynamicObject
  1532. forward SSpec_OnShootDynamicObject(playerid,weaponid,STREAMER_TAG_OBJECT objectid,Float:x,Float:y,Float:z);
  1533. #endif
  1534. #endif
  1535. /****************************************************************************************************
  1536. * *
  1537. * FilterScript/GameMode Init Hook *
  1538. * *
  1539. ****************************************************************************************************/
  1540. new bool:CRC_StreamerFunctionInit = true,
  1541. bool:CRC_StreamerFunctionExit = true;
  1542. StreamerSpec::Public:: SSpec_OnRequestResponse(index, response_code, data[]){
  1543. if(response_code == 200){
  1544. if(isnull(data)) return 0;
  1545. new sspec_version[16], sspec_ver, sspec_file_ver = Streamer_Spec_Version;
  1546. strmid(sspec_version,data,0,strlen(data));
  1547. sspec_ver = strval(sspec_version);
  1548. if(sspec_ver != sspec_file_ver){
  1549. print(" ");
  1550. printf("[ADM] Info: Please update your StreamerFunction include to v%d.%d.%d from here:",(sspec_ver / 10000),((sspec_ver % 10000) / 100),((sspec_ver % 10000) % 100));
  1551. print("https://github.com/AbyssMorgan/SA-MP/blob/master/include/SAM/StreamerFunction.inc");
  1552. print(" ");
  1553. }
  1554. }
  1555. return 1;
  1556. }
  1557. StreamerSpec::Function:: StreamerSpecInit(){
  1558. SetSVarInt("ADM:StreamerSpec:ACTIVE",GetStreamerSpecActiveCount()+1);
  1559. //Welcome to StreamerFunction
  1560. new ver_name[16];
  1561. format(ver_name,sizeof(ver_name),"%d.%d.%d",(Streamer_Spec_Version / 10000),((Streamer_Spec_Version % 10000) / 100),((Streamer_Spec_Version % 10000) % 100));
  1562. if(GetSVarInt("ADM:StreamerSpec:INIT") == 0){
  1563. SetSVarInt("ADM:StreamerSpec:INIT",1);
  1564. if(GetSVarInt("ADM:Logging:Disable") == 0){
  1565. printf("[ADM] Info: Load Streamer Functions v%s for SA:MP %s by Abyss Morgan",ver_name,Streamer_Spec_SAMP_Version);
  1566. }
  1567. }
  1568. if(GetSVarInt("ADM:StreamerSpec:VERCHECK") == 0){
  1569. SetSVarInt("ADM:StreamerSpec:VERCHECK",1);
  1570. new sspec_send_data[50];
  1571. format(sspec_send_data,sizeof(sspec_send_data),"8.ct8.pl/sspec/check.php?version=%d",Streamer_Spec_Version);
  1572. HTTP(1,HTTP_GET,sspec_send_data,"","SSpec_OnRequestResponse");
  1573. }
  1574. #if !defined DISABLE_STREAMER_SPEC_CHECK
  1575. CheckStreamerVersion();
  1576. #endif
  1577. }
  1578. StreamerSpec::Function:: StreamerSpecExit(){
  1579. SetSVarInt("ADM:StreamerSpec:ACTIVE",GetStreamerSpecActiveCount()-1);
  1580. //Goodbye StreamerSpec
  1581. new ver_name[16];
  1582. format(ver_name,sizeof(ver_name),"%d.%d.%d",(Streamer_Spec_Version / 10000),((Streamer_Spec_Version % 10000) / 100),((Streamer_Spec_Version % 10000) % 100));
  1583. if(GetStreamerSpecActiveCount() == 0){
  1584. SetSVarInt("ADM:StreamerSpec:INIT",0);
  1585. if(GetSVarInt("ADM:Logging:Disable") == 0){
  1586. printf("[ADM] Info: Unload Streamer Functions v%s for SA:MP %s by Abyss Morgan",ver_name,Streamer_Spec_SAMP_Version);
  1587. }
  1588. }
  1589. }
  1590. //Hook: OnFilterScriptInit
  1591. public OnFilterScriptInit(){
  1592. if(CRC_StreamerFunctionInit){
  1593. CRC_StreamerFunctionInit = false;
  1594. StreamerSpecInit();
  1595. }
  1596. #if defined SSpec_OnFilterScriptInit
  1597. SSpec_OnFilterScriptInit();
  1598. #endif
  1599. return 1;
  1600. }
  1601. #if defined _ALS_OnFilterScriptInit
  1602. #undef OnFilterScriptInit
  1603. #else
  1604. #define _ALS_OnFilterScriptInit
  1605. #endif
  1606. #define OnFilterScriptInit SSpec_OnFilterScriptInit
  1607. #if defined SSpec_OnFilterScriptInit
  1608. forward SSpec_OnFilterScriptInit();
  1609. #endif
  1610. //Hook: OnGameModeInit
  1611. public OnGameModeInit(){
  1612. if(CRC_StreamerFunctionInit){
  1613. CRC_StreamerFunctionInit = false;
  1614. StreamerSpecInit();
  1615. }
  1616. #if defined SSpec_OnGameModeInit
  1617. SSpec_OnGameModeInit();
  1618. #endif
  1619. return 1;
  1620. }
  1621. #if defined _ALS_OnGameModeInit
  1622. #undef OnGameModeInit
  1623. #else
  1624. #define _ALS_OnGameModeInit
  1625. #endif
  1626. #define OnGameModeInit SSpec_OnGameModeInit
  1627. #if defined SSpec_OnGameModeInit
  1628. forward SSpec_OnGameModeInit();
  1629. #endif
  1630. //Hook: OnFilterScriptExit
  1631. public OnFilterScriptExit(){
  1632. if(CRC_StreamerFunctionExit){
  1633. CRC_StreamerFunctionExit = false;
  1634. StreamerSpecExit();
  1635. }
  1636. #if defined SSpec_OnFilterScriptExit
  1637. SSpec_OnFilterScriptExit();
  1638. #endif
  1639. return 1;
  1640. }
  1641. #if defined _ALS_OnFilterScriptExit
  1642. #undef OnFilterScriptExit
  1643. #else
  1644. #define _ALS_OnFilterScriptExit
  1645. #endif
  1646. #define OnFilterScriptExit SSpec_OnFilterScriptExit
  1647. #if defined SSpec_OnFilterScriptExit
  1648. forward SSpec_OnFilterScriptExit();
  1649. #endif
  1650. //Hook: OnGameModeExit
  1651. public OnGameModeExit(){
  1652. if(CRC_StreamerFunctionExit){
  1653. CRC_StreamerFunctionExit = false;
  1654. StreamerSpecExit();
  1655. }
  1656. #if defined SSpec_OnGameModeExit
  1657. SSpec_OnGameModeExit();
  1658. #endif
  1659. return 1;
  1660. }
  1661. #if defined _ALS_OnGameModeExit
  1662. #undef OnGameModeExit
  1663. #else
  1664. #define _ALS_OnGameModeExit
  1665. #endif
  1666. #define OnGameModeExit SSpec_OnGameModeExit
  1667. #if defined SSpec_OnGameModeExit
  1668. forward SSpec_OnGameModeExit();
  1669. #endif
  1670. //EOF