ATM.inc 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /**********************************************************************************************************************************
  2. * *
  3. * ATM Core *
  4. * *
  5. * Copyright © 2017 Abyss Morgan. All rights reserved. *
  6. * *
  7. * Download: https://github.com/AbyssMorgan/SA-MP/tree/master/include/SAM *
  8. * Publication: None *
  9. * Website: http://8.ct8.pl *
  10. * *
  11. * Plugins: None *
  12. * Modules: None *
  13. * *
  14. * File Version: 1.4.2 *
  15. * SA:MP Version: 0.3.7 (REQUIRE) *
  16. * *
  17. * Functions: *
  18. * SecToTimeDay(second); //Use: %d:%02d:%02d:%02d *
  19. * MSToTimeDay(millisecond); //Use: %d:%02d:%02d:%02d *
  20. * SecToTime(second); //Use: %02d:%02d:%02d *
  21. * MSToTime(millisecond); //Use: %02d:%02d:%02d *
  22. * SecToTimeMini(second); //Use: %02d:%02d *
  23. * MSToTimeMini(millisecond); //Use: %02d:%02d *
  24. * randomex(min,max); *
  25. * KEY_PRESSED(key); *
  26. * KEY_RELEASED(key); *
  27. * KEY_HOLDING(key); *
  28. * CreateExplosionForRangePoint(Float:x,Float:y,Float:z,worldid,interiorid,type,Float:radius,Float:expradius); *
  29. * GetSAMIncludeVersion(value,name[],maxdest = sizeof(name)); *
  30. * DisableADMLogging(bool:disable); *
  31. * SetPlayerWorldBoundsEx(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy); *
  32. * GetPlayerNick(playerid); *
  33. * GetPlayerID(name[]); *
  34. * *
  35. **********************************************************************************************************************************/
  36. /*
  37. //Check Version ATM.inc
  38. #if !defined _ATM_Core
  39. #error [ADM] You need ATM.inc v1.4.2
  40. #elseif !defined ATM_Version
  41. #error [ADM] Update you ATM.inc to v1.4.2
  42. #elseif (ATM_Version < 10402)
  43. #error [ADM] Update you ATM.inc to v1.4.2
  44. #endif
  45. */
  46. #if defined _ATM_Core
  47. #endinput
  48. #endif
  49. #define _ATM_Core
  50. #if (!defined GetPlayerPoolSize || !defined GetSVarInt)
  51. #error [ADM] This include requires SA:MP version 0.3.7 (github.com/AbyssMorgan/SA-MP/blob/master/samp/include)
  52. #endif
  53. #define ATM_Version (10402) //a.b.c 10000*a+100*b+c
  54. #if !defined isnull
  55. #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  56. #endif
  57. #if !defined function && !defined DISABLE_ATM_FUNCTION
  58. #define function%0(%1) forward %0(%1); public %0(%1)
  59. #endif
  60. #if !defined exec && !defined DISABLE_ATM_EXEC
  61. #define exec%0(%1)%2(%3) forward %0(%1); public %0(%1){ return %2(%3); }
  62. #define PubFunction:{%0,%1} exec %0 %1
  63. #endif
  64. #if !defined DISABLE_ATM_PUB_VAR
  65. #define ServerPubVar:{%1,%2} forward v_%1(); public v_%1(){ return (%2); }
  66. #define GetServerPubVar(%1) CallRemoteFunction("v_"#%1"","")
  67. #define PlayerPubVar:{%1,%2} forward v_%1(playerid); public v_%1(playerid){ return (%2); }
  68. #define GetPlayerPubVar(%0,%1) CallRemoteFunction("v_"#%1"","d",%0)
  69. #endif
  70. #if !defined randomex
  71. #define randomex(%0,%1) (random((%1)-(%0)+1)+(%0))
  72. #endif
  73. #if !defined SecToTimeDay
  74. //%d:%02d:%02d:%02d
  75. #define SecToTimeDay(%0) ((%0) / 86400),(((%0) % 86400) / 3600),((((%0) % 86400) % 3600) / 60),((((%0) % 86400) % 3600) % 60)
  76. #define MSToTimeDay(%0) SecToTimeDay((%0)/1000)
  77. //%02d:%02d:%02d
  78. #define SecToTime(%0) ((%0) / 3600),(((%0) % 3600) / 60),(((%0) % 3600) % 60)
  79. #define MSToTime(%0) SecToTime((%0)/1000)
  80. //%02d:%02d
  81. #define SecToTimeMini(%0) ((%0) / 60),((%0) % 60)
  82. #define MSToTimeMini(%0) SecToTimeMini((%0)/1000)
  83. #endif
  84. //value bigger than possible
  85. #if !defined VBTP
  86. #define VBTP (0x7FFFFFFF)
  87. #endif
  88. #if !defined FLOAT_NAN
  89. #define FLOAT_NAN (Float:0xFFFFFFFF)
  90. #endif
  91. #define SD_TINY (5.0)
  92. #define SD_VERYLOW (20.0)
  93. #define SD_LOW (200.0)
  94. #define SD_MEDIUM (500.0)
  95. #define SD_HIGH (800.0)
  96. #define SD_VERYHIGH (999.0)
  97. #define ALL_PLAYERS (-1)
  98. #define ALL_VW (-1)
  99. #define ALL_INT (-1)
  100. #define ATM_INT (1)
  101. #define ATM_VW (1)
  102. #define REAL_INT (0)
  103. #define REAL_VW (0)
  104. #if !defined KEY_PRESSED
  105. #define KEY_PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  106. #endif
  107. #if !defined KEY_RELEASED
  108. #define KEY_RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
  109. #endif
  110. #if !defined KEY_HOLDING
  111. #define KEY_HOLDING(%0) ((newkeys & (%0)) == (%0))
  112. #endif
  113. enum e_Vectors {
  114. Float:X, Float:Y, Float:Z, Float:A
  115. }
  116. enum e_float {
  117. Float:X, Float:Y, Float:Z,
  118. Float:rX, Float:rY, Float:rZ,
  119. Float:tX, Float:tY, Float:tZ,
  120. VW, INT, Float:SPEED
  121. }
  122. enum e_long_float {
  123. Float:X, Float:Y, Float:Z,
  124. Float:rX, Float:rY, Float:rZ,
  125. Float:tX, Float:tY, Float:tZ,
  126. Float:trX, Float:trY, Float:trZ,
  127. Float:VecX, Float:VecY, Float:VecZ,
  128. VW, INT, Float:SPEED
  129. }
  130. stock CreateExplosionForRangePoint(Float:x,Float:y,Float:z,worldid,interiorid,type,Float:radius,Float:expradius){
  131. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  132. if(IsPlayerConnected(i)){
  133. new F4[e_float];
  134. if(IsPlayerInAnyVehicle(i)){
  135. GetVehiclePos(GetPlayerVehicleID(i),F4[X],F4[Y],F4[Z]);
  136. } else {
  137. GetPlayerPos(i,F4[X],F4[Y],F4[Z]);
  138. }
  139. new Float:distance = VectorSize(F4[X]-x,F4[Y]-y,F4[Z]-z);
  140. if((GetPlayerInterior(i) == interiorid || interiorid == -1) && (GetPlayerVirtualWorld(i) == worldid || worldid == -1) && (distance <= radius)){
  141. CreateExplosionForPlayer(i,x,y,z,type,expradius);
  142. }
  143. }
  144. }
  145. return 1;
  146. }
  147. stock GetSAMIncludeVersion(value,name[],maxdest = sizeof(name)){
  148. format(name,maxdest,"%d.%d.%d",(value / 10000),((value % 10000) / 100),((value % 10000) % 100));
  149. }
  150. stock DisableADMLogging(bool:disable){
  151. if(disable){
  152. SetSVarInt("ADM:Logging:Disable",1);
  153. } else {
  154. SetSVarInt("ADM:Logging:Disable",0);
  155. }
  156. }
  157. stock SetPlayerWorldBoundsEx(playerid,Float:minx,Float:miny,Float:maxx,Float:maxy){
  158. new Float:Tminx,Float:Tminy,Float:Tmaxx,Float:Tmaxy;
  159. if(minx < maxx){
  160. Tminx = minx, Tmaxx = maxx;
  161. } else {
  162. Tminx = maxx, Tmaxx = minx;
  163. }
  164. if(miny < maxy){
  165. Tminy = miny, Tmaxy = maxy;
  166. } else {
  167. Tminy = maxy, Tmaxy = miny;
  168. }
  169. SetPlayerWorldBounds(playerid,Tminx,Tminy,Tmaxx,Tmaxy);
  170. }
  171. stock GetPlayerNick(playerid){
  172. new pnick[MAX_PLAYER_NAME];
  173. GetPlayerName(playerid,pnick,sizeof(pnick));
  174. return pnick;
  175. }
  176. stock GetPlayerID(name[]){
  177. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){
  178. if(IsPlayerConnected(i)){
  179. if(!strcmp(name,GetPlayerNick(i),false)) return i;
  180. }
  181. }
  182. return INVALID_PLAYER_ID;
  183. }
  184. //EOF