money-config.inc 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. /*
  2. Include:
  3. money-config.inc
  4. * Functions for anti money hack
  5. * Author: (zile42O)
  6. * Created date: (13/8/2018)
  7. (c) Copyright 2018
  8. */
  9. #if defined _inc_money_config
  10. #endinput
  11. #endif
  12. #define _inc_money_config
  13. #include "a_samp"
  14. #define MC_RESOLUTION 1
  15. // RESOLUTION TYPES:
  16. // 1 - 1980 x 1080 x 16
  17. // 2 - 1024 x 728 x 32
  18. // 3 - 800 x 600 x 32
  19. new mc_player_money[MAX_PLAYERS];
  20. new mc_player_tick[MAX_PLAYERS];
  21. new mc_player_color_money[MAX_PLAYERS];
  22. new bool:mc_player_spawned[MAX_PLAYERS];
  23. new PlayerText: MC_MONEY_TD[MAX_PLAYERS];
  24. new PlayerText: MC_MONEY_INFO_TD[MAX_PLAYERS];
  25. new const MAX_MONEY = 9999999999,
  26. MIN_MONEY = -9999999999;
  27. new const
  28. MONEY_BAR_COLOR = 0x005623FF, // Dark green
  29. MONEY_POSI_COL = 0x11DD65FF, // Light green
  30. MONEY_NEGA_COL = 0xDD1111FF; // Light red
  31. forward SetMoneyInfo(playerid, amount, bool:type, timems);
  32. forward OnPlayerTakeMoney(playerid, amount);
  33. //
  34. public OnPlayerConnect(playerid)
  35. {
  36. mc_player_spawned[playerid] = false;
  37. mc_player_color_money[playerid] = MONEY_BAR_COLOR; //default
  38. mc_player_money[playerid] = 0;
  39. //TDs
  40. //Resolutions:
  41. //Res 1:
  42. #if MC_RESOLUTION == 1
  43. MC_MONEY_TD[playerid] = CreatePlayerTextDraw(playerid, 607.366943, 77.814590, "$00000000");
  44. PlayerTextDrawLetterSize(playerid, MC_MONEY_TD[playerid], 0.547333, 2.130961);
  45. //Res 2:
  46. #elseif MC_RESOLUTION == 2
  47. MC_MONEY_TD[playerid] = CreatePlayerTextDraw(playerid, 608.125000, 78.666564, "$00000000");
  48. PlayerTextDrawLetterSize(playerid, MC_MONEY_TD[playerid], 0.552501, 1.945835);
  49. #elseif MC_RESOLUTION == 3
  50. //Res 3:
  51. MC_MONEY_TD[playerid] = CreatePlayerTextDraw(playerid, 608.399658, 77.103370, "$00000000");
  52. PlayerTextDrawLetterSize(playerid, MC_MONEY_TD[playerid], 0.557600, 2.130131);
  53. #endif
  54. //Other
  55. PlayerTextDrawAlignment(playerid, MC_MONEY_TD[playerid], 3);
  56. PlayerTextDrawColor(playerid, MC_MONEY_TD[playerid], MONEY_BAR_COLOR);
  57. PlayerTextDrawSetShadow(playerid, MC_MONEY_TD[playerid], 0);
  58. PlayerTextDrawSetOutline(playerid, MC_MONEY_TD[playerid], 2);
  59. PlayerTextDrawBackgroundColor(playerid, MC_MONEY_TD[playerid], 255);
  60. PlayerTextDrawFont(playerid, MC_MONEY_TD[playerid], 3);
  61. PlayerTextDrawSetProportional(playerid, MC_MONEY_TD[playerid], 1);
  62. PlayerTextDrawSetShadow(playerid, MC_MONEY_TD[playerid], 0);
  63. MC_MONEY_INFO_TD[playerid] = CreatePlayerTextDraw(playerid, 494.333282, 84.637123, "_");
  64. PlayerTextDrawLetterSize(playerid, MC_MONEY_INFO_TD[playerid], 0.264999, 1.085630);
  65. PlayerTextDrawAlignment(playerid, MC_MONEY_INFO_TD[playerid], 3);
  66. PlayerTextDrawColor(playerid, MC_MONEY_INFO_TD[playerid], -1);
  67. PlayerTextDrawSetShadow(playerid, MC_MONEY_INFO_TD[playerid], 0);
  68. PlayerTextDrawSetOutline(playerid, MC_MONEY_INFO_TD[playerid], 0);
  69. PlayerTextDrawBackgroundColor(playerid, MC_MONEY_INFO_TD[playerid], 255);
  70. PlayerTextDrawFont(playerid, MC_MONEY_INFO_TD[playerid], 3);
  71. PlayerTextDrawSetProportional(playerid, MC_MONEY_INFO_TD[playerid], 1);
  72. PlayerTextDrawSetShadow(playerid, MC_MONEY_INFO_TD[playerid], 0);
  73. #if defined MC_OnPlayerConnect
  74. return MC_OnPlayerConnect(playerid);
  75. #else
  76. return 1;
  77. #endif
  78. }
  79. public OnPlayerDisconnect(playerid, reason)
  80. {
  81. mc_player_spawned[playerid] = false;
  82. PlayerTextDrawDestroy(playerid, MC_MONEY_TD[playerid]);
  83. PlayerTextDrawDestroy(playerid, MC_MONEY_INFO_TD[playerid]);
  84. mc_player_money[playerid] = 0;
  85. #if defined MC_OnPlayerDisconnect
  86. return MC_OnPlayerDisconnect(playerid, reason);
  87. #else
  88. return 1;
  89. #endif
  90. }
  91. public OnPlayerSpawn(playerid)
  92. {
  93. mc_player_spawned[playerid] = true;
  94. PlayerTextDrawShow(playerid, MC_MONEY_TD[playerid]);
  95. PlayerTextDrawShow(playerid, MC_MONEY_INFO_TD[playerid]);
  96. #if defined MC_OnPlayerSpawn
  97. return MC_OnPlayerSpawn(playerid);
  98. #else
  99. return 1;
  100. #endif
  101. }
  102. stock ChangeColorMoneyForPlayer(playerid, newcolor)
  103. {
  104. if(mc_player_spawned[playerid] == false) return false;
  105. if(GetPlayerMoney(playerid) < 0) return false;
  106. mc_player_color_money[playerid] = newcolor;
  107. PlayerTextDrawColor(playerid, MC_MONEY_TD[playerid], mc_player_color_money[playerid]);
  108. PlayerTextDrawHide(playerid, MC_MONEY_TD[playerid]);
  109. PlayerTextDrawShow(playerid, MC_MONEY_TD[playerid]);
  110. return true;
  111. }
  112. stock MC_GivePlayerMoney(playerid, money)
  113. {
  114. if(money == 0) return false;
  115. if(mc_player_spawned[playerid] == false)
  116. {
  117. printf("MoneyConfig: Can't set for id:%d money: %d cause is player not spawned", playerid, money);
  118. return false;
  119. }
  120. if (money > MAX_MONEY)
  121. {
  122. printf("MoneyConfig: Can't set for id:%d money: %d cause is max limit %d", playerid, money, MAX_MONEY);
  123. return false;
  124. }
  125. if (money < MIN_MONEY)
  126. {
  127. printf("MoneyConfig: Can't set for id:%d money: %d cause is min limit %d", playerid, money, MIN_MONEY);
  128. return false;
  129. }
  130. if (money > 0)
  131. {
  132. SetMoneyInfo(playerid, money, true, 1500);
  133. mc_player_money[playerid] += money;
  134. }
  135. else if (money < 0)
  136. {
  137. SetMoneyInfo(playerid, money, false, 1500);
  138. mc_player_money[playerid] -= abs(money);
  139. }
  140. ResetPlayerMoney(playerid);
  141. CallLocalFunction("OnPlayerTakeMoney", "id", playerid, mc_player_money[playerid]);
  142. return GivePlayerMoney(playerid, mc_player_money[playerid]);
  143. }
  144. stock abs( value )
  145. {
  146. return ((value < 0 ) ? (-value) : (value));
  147. }
  148. #if defined _ALS_GivePlayerMoney
  149. #undef GivePlayerMoney
  150. #else
  151. #define _ALS_GivePlayerMoney
  152. #endif
  153. #define GivePlayerMoney MC_GivePlayerMoney
  154. public OnPlayerTakeMoney(playerid, amount)
  155. {
  156. new arg[60];
  157. if(amount == 0)
  158. {
  159. format(arg,sizeof(arg),"$00000000");
  160. PlayerTextDrawSetString(playerid, MC_MONEY_TD[playerid], arg);
  161. PlayerTextDrawColor(playerid, MC_MONEY_TD[playerid], mc_player_color_money[playerid]);
  162. PlayerTextDrawHide(playerid, MC_MONEY_TD[playerid]);
  163. }
  164. else if (amount > 0)
  165. {
  166. format(arg,sizeof(arg),"$%08d", amount);
  167. PlayerTextDrawSetString(playerid, MC_MONEY_TD[playerid], arg);
  168. PlayerTextDrawColor(playerid, MC_MONEY_TD[playerid], mc_player_color_money[playerid]);
  169. PlayerTextDrawHide(playerid, MC_MONEY_TD[playerid]);
  170. }
  171. else if (amount < 0)
  172. {
  173. format(arg,sizeof(arg),"$%08d", amount);
  174. PlayerTextDrawSetString(playerid, MC_MONEY_TD[playerid], arg);
  175. PlayerTextDrawColor(playerid, MC_MONEY_TD[playerid], MONEY_NEGA_COL);
  176. PlayerTextDrawHide(playerid, MC_MONEY_TD[playerid]);
  177. }
  178. PlayerTextDrawShow(playerid, MC_MONEY_TD[playerid]);
  179. return true;
  180. }
  181. public SetMoneyInfo(playerid, amount, bool:type, timems)
  182. {
  183. new arg[60];
  184. if (mc_player_tick[playerid] < GetTickCount())
  185. {
  186. mc_player_tick[playerid] = GetTickCount() + timems;
  187. if (type == true)
  188. {
  189. format(arg,sizeof(arg),"+$%d", amount);
  190. PlayerTextDrawColor(playerid, MC_MONEY_INFO_TD[playerid], MONEY_POSI_COL);
  191. PlayerTextDrawHide(playerid, MC_MONEY_INFO_TD[playerid]);
  192. }
  193. else
  194. {
  195. format(arg,sizeof(arg),"$%d", amount);
  196. PlayerTextDrawColor(playerid, MC_MONEY_INFO_TD[playerid], MONEY_NEGA_COL);
  197. PlayerTextDrawHide(playerid, MC_MONEY_INFO_TD[playerid]);
  198. }
  199. PlayerTextDrawSetString(playerid, MC_MONEY_INFO_TD[playerid], arg);
  200. PlayerTextDrawShow(playerid, MC_MONEY_INFO_TD[playerid]);
  201. SetTimerEx("InfoMoneyOff", timems, false, "i", playerid);
  202. }
  203. return true;
  204. }
  205. forward InfoMoneyOff(playerid);
  206. public InfoMoneyOff(playerid)
  207. {
  208. PlayerTextDrawSetString(playerid, MC_MONEY_INFO_TD[playerid], "_");
  209. return true;
  210. }
  211. stock MC_ResetPlayerMoney(playerid)
  212. {
  213. mc_player_money[playerid] = 0; //Reset
  214. CallLocalFunction("OnPlayerTakeMoney", "id", playerid, mc_player_money[playerid]);
  215. return ResetPlayerMoney(playerid);
  216. }
  217. #if defined _ALS_ResetPlayerMoney
  218. #undef ResetPlayerMoney
  219. #else
  220. #define _ALS_ResetPlayerMoney
  221. #endif
  222. #define ResetPlayerMoney MC_ResetPlayerMoney
  223. stock MC_GetPlayerMoney(playerid)
  224. {
  225. return mc_player_money[playerid];
  226. }
  227. #if defined _ALS_GetPlayerMoney
  228. #undef GetPlayerMoney
  229. #else
  230. #define _ALS_GetPlayerMoney
  231. #endif
  232. #define GetPlayerMoney MC_GetPlayerMoney
  233. //
  234. #if defined _ALS_OnPlayerConnect
  235. #undef OnPlayerConnect
  236. #else
  237. #define _ALS_OnPlayerConnect
  238. #endif
  239. #define OnPlayerConnect MC_OnPlayerConnect
  240. #if defined MC_OnPlayerConnect
  241. forward MC_OnPlayerConnect(playerid);
  242. #endif
  243. #if defined _ALS_OnPlayerDisconnect
  244. #undef OnPlayerDisconnect
  245. #else
  246. #define _ALS_OnPlayerDisconnect
  247. #endif
  248. #define OnPlayerDisconnect MC_OnPlayerDisconnect
  249. #if defined MC_OnPlayerDisconnect
  250. forward MC_OnPlayerDisconnect(playerid);
  251. #endif
  252. #if defined _ALS_OnPlayerSpawn
  253. #undef OnPlayerSpawn
  254. #else
  255. #define _ALS_OnPlayerSpawn
  256. #endif
  257. #define OnPlayerSpawn MC_OnPlayerSpawn
  258. #if defined MC_OnPlayerSpawn
  259. forward MC_OnPlayerSpawn(playerid);
  260. #endif