Advertisement
Guest User

M-Zones SA-MP

a guest
Apr 26th, 2020
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.34 KB | None | 0 0
  1. /*
  2. *
  3. * M-Zones © by Marciii
  4. *
  5. * Released: 20.07.2009
  6. * Version: 1.3
  7. * Lignes: 370
  8. * Language: German
  9. * Coder: Marciii
  10. *
  11. *
  12. native M_CreateZone(Float:minx,Float:miny,Float:maxx,Float:maxy,zonecolor,text[]="",textcolor=0xFFFFFFFF);
  13. native M_DestroyZone(zoneid);
  14. native M_ZoneFlashForPlayer(playerid,zoneid,flashcolor);
  15. native M_ZoneFlashForAll(zoneid,flashcolor);
  16. native M_ZoneStopFlashForPlayer(playerid,zoneid);
  17. native M_ZoneStopFlashForAll(zoneid);
  18. native M_ZoneSetTextDraw(zoneid,text[]="",textcolor=0xFFFFFFFF);
  19. native M_ZoneSetColor(zoneid,zonecolor);
  20. native M_ZoneSetZone(zoneid,Float:minx,Float:miny,Float:maxx,Float:maxy,zonecolor);
  21. native M_ZoneGetZoneCoords(zoneid,&Float:minx,&Float:miny,&Float:maxx,&Float:maxy);
  22. native M_IsValidZone(zoneid);
  23. native M_IsPlayerInZone(playerid,zoneid);
  24. native M_IsPlayerInAnyZone(playerid);
  25. native M_GetPlayerCurrentZone(playerid);
  26. native M_IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY);
  27. native M_OnPlayerEnterZone(playerid,zoneid);
  28. native M_OnPlayerLeaveZone(playerid,zoneid);
  29. *
  30. */
  31.  
  32. #if defined m_zones_included
  33. #endinput
  34. #endif
  35. #define m_zones_included
  36.  
  37. // Wenn du mehr als 200 Zonen verwenden willst, erhöhe diese Zahl
  38. #define MAX_ZONES 200
  39.  
  40. enum ZoneInfo_enum
  41. {
  42. zGangZoneID,
  43. zValid,
  44. Float:zMinX,
  45. Float:zMinY,
  46. Float:zMaxX,
  47. Float:zMaxY,
  48. Text:zTextDraw,
  49. zText[100],
  50. zColor,
  51. zFlash,
  52. zFlashColor,
  53. }
  54.  
  55. new zones = 0;
  56. new ZoneInfo[MAX_ZONES][ZoneInfo_enum];
  57. new InZone[MAX_PLAYERS][MAX_ZONES];
  58.  
  59. forward ShowZoneText();
  60. forward M_OnPlayerEnterZone(playerid,zoneid);
  61. forward M_OnPlayerLeaveZone(playerid,zoneid);
  62.  
  63. M_Init()
  64. {
  65. SetTimer("ShowZoneText",999,1);
  66. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  67. {
  68. ZoneInfo[zoneid][zGangZoneID] = -1;
  69. ZoneInfo[zoneid][zValid] = 0;
  70. ZoneInfo[zoneid][zMinX] = 0.0;
  71. ZoneInfo[zoneid][zMinY] = 0.0;
  72. ZoneInfo[zoneid][zMaxX] = 0.0;
  73. ZoneInfo[zoneid][zMaxY] = 0.0;
  74. strmid(ZoneInfo[zoneid][zText],"",0,100);
  75. }
  76. return 1;
  77. }
  78.  
  79. M_Connect(playerid)
  80. {
  81. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  82. {
  83. if(M_IsValidZone(zoneid))
  84. {
  85. GangZoneShowForPlayer(playerid,ZoneInfo[zoneid][zGangZoneID],ZoneInfo[zoneid][zColor]);
  86. if(ZoneInfo[zoneid][zFlash])
  87. {
  88. GangZoneFlashForPlayer(playerid,ZoneInfo[zoneid][zGangZoneID],ZoneInfo[zoneid][zFlashColor]);
  89. }
  90. }
  91. }
  92. return 1;
  93. }
  94.  
  95. public ShowZoneText()
  96. {
  97. for(new i=0; i<GetMaxPlayers(); i++)
  98. {
  99. if(IsPlayerConnected(i))
  100. {
  101. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  102. {
  103. if(M_IsValidZone(zoneid))
  104. {
  105. if(M_IsPlayerInZone(i,zoneid) && InZone[i][zoneid] == 0)
  106. {
  107. if(ZoneInfo[zoneid][zText][0] != '\0')
  108. {
  109. TextDrawShowForPlayer(i,ZoneInfo[zoneid][zTextDraw]);
  110. }
  111. InZone[i][zoneid] = 1;
  112. M_OnPlayerEnterZone(i,zoneid);
  113. }
  114. if(!M_IsPlayerInZone(i,zoneid) && InZone[i][zoneid] == 1)
  115. {
  116. if(ZoneInfo[zoneid][zText][0] != '\0')
  117. {
  118. TextDrawHideForPlayer(i,ZoneInfo[zoneid][zTextDraw]);
  119. }
  120. InZone[i][zoneid] = 0;
  121. M_OnPlayerLeaveZone(i,zoneid);
  122. }
  123. }
  124. }
  125. }
  126. }
  127. return 1;
  128. }
  129.  
  130. stock M_CreateZone(Float:minx,Float:miny,Float:maxx,Float:maxy,zonecolor,text[]="",textcolor=0xFFFFFFFF)
  131. {
  132. if(!M_IsValidZone(zones) && zones != MAX_ZONES)
  133. {
  134. if(text[0] != '\0')
  135. {
  136. ZoneInfo[zones][zTextDraw] = TextDrawCreate(600.0,380.0,text);
  137. TextDrawFont(ZoneInfo[zones][zTextDraw],1);
  138. TextDrawAlignment(ZoneInfo[zones][zTextDraw],3);
  139. TextDrawLetterSize(ZoneInfo[zones][zTextDraw],0.35,1.4);
  140. TextDrawSetShadow(ZoneInfo[zones][zTextDraw],0);
  141. TextDrawSetOutline(ZoneInfo[zones][zTextDraw],1);
  142. TextDrawColor(ZoneInfo[zones][zTextDraw],textcolor);
  143. TextDrawBackgroundColor(ZoneInfo[zones][zTextDraw],0x000000FF);
  144. }
  145. if(minx > maxx) // FALSCHRUM!
  146. {
  147. ZoneInfo[zones][zMinX] = maxx;
  148. ZoneInfo[zones][zMaxX] = minx;
  149. }
  150. else
  151. {
  152. ZoneInfo[zones][zMinX] = minx;
  153. ZoneInfo[zones][zMaxX] = maxx;
  154. }
  155. if(miny > maxy) // FALSCHRUM!
  156. {
  157. ZoneInfo[zones][zMinY] = maxy;
  158. ZoneInfo[zones][zMaxY] = miny;
  159. }
  160. else
  161. {
  162. ZoneInfo[zones][zMinY] = miny;
  163. ZoneInfo[zones][zMaxY] = maxy;
  164. }
  165. ZoneInfo[zones][zGangZoneID] = GangZoneCreate(ZoneInfo[zones][zMinX],ZoneInfo[zones][zMinY],ZoneInfo[zones][zMaxX],ZoneInfo[zones][zMaxY]);
  166. GangZoneShowForAll(ZoneInfo[zones][zGangZoneID],zonecolor);
  167. ZoneInfo[zones][zValid] = 1;
  168. strmid(ZoneInfo[zones][zText],text,0,strlen(text),255);
  169. zones++;
  170. return zones-1;
  171. }
  172. return -1;
  173. }
  174.  
  175. stock M_DestroyZone(zoneid)
  176. {
  177. if(M_IsValidZone(zoneid))
  178. {
  179. if(ZoneInfo[zoneid][zText][0] != '\0')
  180. {
  181. TextDrawHideForAll(ZoneInfo[zoneid][zTextDraw]);
  182. TextDrawDestroy(ZoneInfo[zoneid][zTextDraw]);
  183. }
  184. GangZoneHideForAll(ZoneInfo[zoneid][zGangZoneID]);
  185. GangZoneDestroy(ZoneInfo[zoneid][zGangZoneID]);
  186. ZoneInfo[zoneid][zValid] = 0;
  187. ZoneInfo[zoneid][zMinX] = 0.0;
  188. ZoneInfo[zoneid][zMinY] = 0.0;
  189. ZoneInfo[zoneid][zMaxX] = 0.0;
  190. ZoneInfo[zoneid][zMaxY] = 0.0;
  191. ZoneInfo[zoneid][zFlash] = 0;
  192. ZoneInfo[zoneid][zFlashColor] = 0x00000000;
  193. ZoneInfo[zoneid][zColor] = 0x00000000;
  194. strmid(ZoneInfo[zoneid][zText],"",0,0,255);
  195. return 1;
  196. }
  197. return 0;
  198. }
  199.  
  200. stock M_ZoneFlashForPlayer(playerid,zoneid,flashcolor)
  201. {
  202. if(M_IsValidZone(zoneid) && IsPlayerConnected(playerid))
  203. {
  204. GangZoneFlashForPlayer(playerid,ZoneInfo[zoneid][zGangZoneID],flashcolor);
  205. ZoneInfo[zoneid][zFlash] = 1;
  206. ZoneInfo[zoneid][zFlashColor] = flashcolor;
  207. return 1;
  208. }
  209. return 0;
  210. }
  211.  
  212. stock M_ZoneFlashForAll(zoneid,flashcolor)
  213. {
  214. if(M_IsValidZone(zoneid))
  215. {
  216. GangZoneFlashForAll(ZoneInfo[zoneid][zGangZoneID],flashcolor);
  217. ZoneInfo[zoneid][zFlash] = 1;
  218. ZoneInfo[zoneid][zFlashColor] = flashcolor;
  219. return 1;
  220. }
  221. return 0;
  222. }
  223.  
  224. stock M_ZoneStopFlashForPlayer(playerid,zoneid)
  225. {
  226. if(M_IsValidZone(zoneid) && IsPlayerConnected(playerid))
  227. {
  228. GangZoneStopFlashForPlayer(playerid,ZoneInfo[zoneid][zGangZoneID]);
  229. ZoneInfo[zoneid][zFlash] = 0;
  230. ZoneInfo[zoneid][zFlashColor] = 0x00000000;
  231. return 1;
  232. }
  233. return 0;
  234. }
  235.  
  236. stock M_ZoneStopFlashForAll(zoneid)
  237. {
  238. if(M_IsValidZone(zoneid))
  239. {
  240. GangZoneStopFlashForAll(ZoneInfo[zoneid][zGangZoneID]);
  241. ZoneInfo[zoneid][zFlash] = 0;
  242. ZoneInfo[zoneid][zFlashColor] = 0x00000000;
  243. return 1;
  244. }
  245. return 0;
  246. }
  247.  
  248. stock M_ZoneSetTextDraw(zoneid,text[]="",textcolor=0xFFFFFFFF)
  249. {
  250. if(M_IsValidZone(zoneid))
  251. {
  252. if(text[0] != '\0')
  253. {
  254. ZoneInfo[zoneid][zTextDraw] = TextDrawCreate(600.0,380.0,text);
  255. TextDrawFont(ZoneInfo[zoneid][zTextDraw],1);
  256. TextDrawAlignment(ZoneInfo[zoneid][zTextDraw],3);
  257. TextDrawLetterSize(ZoneInfo[zoneid][zTextDraw],0.35,1.4);
  258. TextDrawSetShadow(ZoneInfo[zoneid][zTextDraw],0);
  259. TextDrawSetOutline(ZoneInfo[zoneid][zTextDraw],1);
  260. TextDrawColor(ZoneInfo[zoneid][zTextDraw],textcolor);
  261. TextDrawBackgroundColor(ZoneInfo[zoneid][zTextDraw],0x000000FF);
  262. }
  263. strmid(ZoneInfo[zoneid][zText],text,0,strlen(text),255);
  264. return 1;
  265. }
  266. return 0;
  267. }
  268.  
  269. stock M_ZoneSetColor(zoneid,zonecolor)
  270. {
  271. if(M_IsValidZone(zoneid))
  272. {
  273. GangZoneHideForAll(ZoneInfo[zoneid][zGangZoneID]);
  274. GangZoneShowForAll(ZoneInfo[zoneid][zGangZoneID],zonecolor);
  275. ZoneInfo[zoneid][zColor] = zonecolor;
  276. return 1;
  277. }
  278. return 0;
  279. }
  280.  
  281. stock M_ZoneSetZone(zoneid,Float:minx,Float:miny,Float:maxx,Float:maxy,zonecolor)
  282. {
  283. if(M_IsValidZone(zoneid))
  284. {
  285. if(minx > maxx) // FALSCHRUM!
  286. {
  287. ZoneInfo[zoneid][zMinX] = maxx;
  288. ZoneInfo[zoneid][zMaxX] = minx;
  289. }
  290. else
  291. {
  292. ZoneInfo[zoneid][zMinX] = minx;
  293. ZoneInfo[zoneid][zMaxX] = maxx;
  294. }
  295. if(miny > maxy) // FALSCHRUM!
  296. {
  297. ZoneInfo[zoneid][zMinY] = maxy;
  298. ZoneInfo[zoneid][zMaxY] = miny;
  299. }
  300. else
  301. {
  302. ZoneInfo[zoneid][zMinY] = miny;
  303. ZoneInfo[zoneid][zMaxY] = maxy;
  304. }
  305. GangZoneHideForAll(ZoneInfo[zoneid][zGangZoneID]);
  306. GangZoneDestroy(ZoneInfo[zoneid][zGangZoneID]);
  307. ZoneInfo[zoneid][zGangZoneID] = GangZoneCreate(ZoneInfo[zoneid][zMinX],ZoneInfo[zoneid][zMinY],ZoneInfo[zoneid][zMaxX],ZoneInfo[zoneid][zMaxY]);
  308. GangZoneShowForAll(ZoneInfo[zoneid][zGangZoneID],zonecolor);
  309. return 1;
  310. }
  311. return 0;
  312. }
  313.  
  314. stock M_ZoneGetZoneCoords(zoneid,&Float:minx,&Float:miny,&Float:maxx,&Float:maxy)
  315. {
  316. if(M_IsValidZone(zoneid))
  317. {
  318. minx = ZoneInfo[zoneid][minx];
  319. miny = ZoneInfo[zoneid][miny];
  320. maxx = ZoneInfo[zoneid][maxx];
  321. maxy = ZoneInfo[zoneid][maxy];
  322. return 1;
  323. }
  324. return 0;
  325. }
  326.  
  327. stock M_IsValidZone(zoneid)
  328. {
  329. return ZoneInfo[zoneid][zValid];
  330. }
  331.  
  332. stock M_IsPlayerInZone(playerid,zoneid)
  333. {
  334. if(M_IsValidZone(zoneid))
  335. {
  336. return (M_IsPlayerInArea(playerid,ZoneInfo[zoneid][zMinX],ZoneInfo[zoneid][zMinY],ZoneInfo[zoneid][zMaxX],ZoneInfo[zoneid][zMaxY]));
  337. }
  338. return 0;
  339. }
  340.  
  341. stock M_IsPlayerInAnyZone(playerid)
  342. {
  343. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  344. {
  345. if(M_IsValidZone(zoneid))
  346. {
  347. if(IsPlayerInZone(playerid,zoneid))
  348. {
  349. return 1;
  350. }
  351. }
  352. }
  353. return 0;
  354. }
  355.  
  356. stock M_GetPlayerCurrentZone(playerid)
  357. {
  358. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  359. {
  360. if(M_IsValidZone(zoneid))
  361. {
  362. if(M_IsPlayerInZone(playerid,zoneid))
  363. {
  364. return zoneid;
  365. }
  366. }
  367. }
  368. return -1;
  369. }
  370.  
  371. stock M_IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
  372. {
  373. new Float:pX, Float:pY, Float:pZ;
  374. GetPlayerPos(playerid,pX,pY,pZ);
  375. if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY)
  376. {
  377. return 1;
  378. }
  379. return 0;
  380. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement