Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2011
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.38 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. ZoneInfo[zones][zColor] = zonecolor;
  169. strmid(ZoneInfo[zones][zText],text,0,strlen(text),255);
  170. zones++;
  171. return zones-1;
  172. }
  173. return -1;
  174. }
  175.  
  176. stock M_DestroyZone(zoneid)
  177. {
  178. if(M_IsValidZone(zoneid))
  179. {
  180. if(ZoneInfo[zoneid][zText][0] != '\0')
  181. {
  182. TextDrawHideForAll(ZoneInfo[zoneid][zTextDraw]);
  183. TextDrawDestroy(ZoneInfo[zoneid][zTextDraw]);
  184. }
  185. GangZoneHideForAll(ZoneInfo[zoneid][zGangZoneID]);
  186. GangZoneDestroy(ZoneInfo[zoneid][zGangZoneID]);
  187. ZoneInfo[zoneid][zValid] = 0;
  188. ZoneInfo[zoneid][zMinX] = 0.0;
  189. ZoneInfo[zoneid][zMinY] = 0.0;
  190. ZoneInfo[zoneid][zMaxX] = 0.0;
  191. ZoneInfo[zoneid][zMaxY] = 0.0;
  192. ZoneInfo[zoneid][zFlash] = 0;
  193. ZoneInfo[zoneid][zFlashColor] = 0x00000000;
  194. ZoneInfo[zoneid][zColor] = 0x00000000;
  195. strmid(ZoneInfo[zoneid][zText],"",0,0,255);
  196. return 1;
  197. }
  198. return 0;
  199. }
  200.  
  201. stock M_ZoneFlashForPlayer(playerid,zoneid,flashcolor)
  202. {
  203. if(M_IsValidZone(zoneid) && IsPlayerConnected(playerid))
  204. {
  205. GangZoneFlashForPlayer(playerid,ZoneInfo[zoneid][zGangZoneID],flashcolor);
  206. ZoneInfo[zoneid][zFlash] = 1;
  207. ZoneInfo[zoneid][zFlashColor] = flashcolor;
  208. return 1;
  209. }
  210. return 0;
  211. }
  212.  
  213. stock M_ZoneFlashForAll(zoneid,flashcolor)
  214. {
  215. if(M_IsValidZone(zoneid))
  216. {
  217. GangZoneFlashForAll(ZoneInfo[zoneid][zGangZoneID],flashcolor);
  218. ZoneInfo[zoneid][zFlash] = 1;
  219. ZoneInfo[zoneid][zFlashColor] = flashcolor;
  220. return 1;
  221. }
  222. return 0;
  223. }
  224.  
  225. stock M_ZoneStopFlashForPlayer(playerid,zoneid)
  226. {
  227. if(M_IsValidZone(zoneid) && IsPlayerConnected(playerid))
  228. {
  229. GangZoneStopFlashForPlayer(playerid,ZoneInfo[zoneid][zGangZoneID]);
  230. ZoneInfo[zoneid][zFlash] = 0;
  231. ZoneInfo[zoneid][zFlashColor] = 0x00000000;
  232. return 1;
  233. }
  234. return 0;
  235. }
  236.  
  237. stock M_ZoneStopFlashForAll(zoneid)
  238. {
  239. if(M_IsValidZone(zoneid))
  240. {
  241. GangZoneStopFlashForAll(ZoneInfo[zoneid][zGangZoneID]);
  242. ZoneInfo[zoneid][zFlash] = 0;
  243. ZoneInfo[zoneid][zFlashColor] = 0x00000000;
  244. return 1;
  245. }
  246. return 0;
  247. }
  248.  
  249. stock M_ZoneSetTextDraw(zoneid,text[]="",textcolor=0xFFFFFFFF)
  250. {
  251. if(M_IsValidZone(zoneid))
  252. {
  253. if(text[0] != '\0')
  254. {
  255. ZoneInfo[zoneid][zTextDraw] = TextDrawCreate(600.0,380.0,text);
  256. TextDrawFont(ZoneInfo[zoneid][zTextDraw],1);
  257. TextDrawAlignment(ZoneInfo[zoneid][zTextDraw],3);
  258. TextDrawLetterSize(ZoneInfo[zoneid][zTextDraw],0.35,1.4);
  259. TextDrawSetShadow(ZoneInfo[zoneid][zTextDraw],0);
  260. TextDrawSetOutline(ZoneInfo[zoneid][zTextDraw],1);
  261. TextDrawColor(ZoneInfo[zoneid][zTextDraw],textcolor);
  262. TextDrawBackgroundColor(ZoneInfo[zoneid][zTextDraw],0x000000FF);
  263. }
  264. strmid(ZoneInfo[zoneid][zText],text,0,strlen(text),255);
  265. return 1;
  266. }
  267. return 0;
  268. }
  269.  
  270. stock M_ZoneSetColor(zoneid,zonecolor)
  271. {
  272. if(M_IsValidZone(zoneid))
  273. {
  274. GangZoneHideForAll(ZoneInfo[zoneid][zGangZoneID]);
  275. GangZoneShowForAll(ZoneInfo[zoneid][zGangZoneID],zonecolor);
  276. ZoneInfo[zoneid][zColor] = zonecolor;
  277. return 1;
  278. }
  279. return 0;
  280. }
  281.  
  282. stock M_ZoneSetZone(zoneid,Float:minx,Float:miny,Float:maxx,Float:maxy,zonecolor)
  283. {
  284. if(M_IsValidZone(zoneid))
  285. {
  286. if(minx > maxx) // FALSCHRUM!
  287. {
  288. ZoneInfo[zoneid][zMinX] = maxx;
  289. ZoneInfo[zoneid][zMaxX] = minx;
  290. }
  291. else
  292. {
  293. ZoneInfo[zoneid][zMinX] = minx;
  294. ZoneInfo[zoneid][zMaxX] = maxx;
  295. }
  296. if(miny > maxy) // FALSCHRUM!
  297. {
  298. ZoneInfo[zoneid][zMinY] = maxy;
  299. ZoneInfo[zoneid][zMaxY] = miny;
  300. }
  301. else
  302. {
  303. ZoneInfo[zoneid][zMinY] = miny;
  304. ZoneInfo[zoneid][zMaxY] = maxy;
  305. }
  306. GangZoneHideForAll(ZoneInfo[zoneid][zGangZoneID]);
  307. GangZoneDestroy(ZoneInfo[zoneid][zGangZoneID]);
  308. ZoneInfo[zoneid][zGangZoneID] = GangZoneCreate(ZoneInfo[zoneid][zMinX],ZoneInfo[zoneid][zMinY],ZoneInfo[zoneid][zMaxX],ZoneInfo[zoneid][zMaxY]);
  309. GangZoneShowForAll(ZoneInfo[zoneid][zGangZoneID],zonecolor);
  310. return 1;
  311. }
  312. return 0;
  313. }
  314.  
  315. stock M_ZoneGetZoneCoords(zoneid,&Float:minx,&Float:miny,&Float:maxx,&Float:maxy)
  316. {
  317. if(M_IsValidZone(zoneid))
  318. {
  319. minx = ZoneInfo[zoneid][minx];
  320. miny = ZoneInfo[zoneid][miny];
  321. maxx = ZoneInfo[zoneid][maxx];
  322. maxy = ZoneInfo[zoneid][maxy];
  323. return 1;
  324. }
  325. return 0;
  326. }
  327.  
  328. stock M_IsValidZone(zoneid)
  329. {
  330. return ZoneInfo[zoneid][zValid];
  331. }
  332.  
  333. stock M_IsPlayerInZone(playerid,zoneid)
  334. {
  335. if(M_IsValidZone(zoneid))
  336. {
  337. return (M_IsPlayerInArea(playerid,ZoneInfo[zoneid][zMinX],ZoneInfo[zoneid][zMinY],ZoneInfo[zoneid][zMaxX],ZoneInfo[zoneid][zMaxY]));
  338. }
  339. return 0;
  340. }
  341.  
  342. stock M_IsPlayerInAnyZone(playerid)
  343. {
  344. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  345. {
  346. if(M_IsValidZone(zoneid))
  347. {
  348. if(IsPlayerInZone(playerid,zoneid))
  349. {
  350. return 1;
  351. }
  352. }
  353. }
  354. return 0;
  355. }
  356.  
  357. stock M_GetPlayerCurrentZone(playerid)
  358. {
  359. for(new zoneid=0; zoneid<MAX_ZONES; zoneid++)
  360. {
  361. if(M_IsValidZone(zoneid))
  362. {
  363. if(M_IsPlayerInZone(playerid,zoneid))
  364. {
  365. return zoneid;
  366. }
  367. }
  368. }
  369. return -1;
  370. }
  371.  
  372. stock M_IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
  373. {
  374. new Float:pX, Float:pY, Float:pZ;
  375. GetPlayerPos(playerid,pX,pY,pZ);
  376. if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY)
  377. {
  378. return 1;
  379. }
  380. return 0;
  381. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement