Guest User

JBank v1.0 - Future Bank of SA-MP

a guest
Apr 12th, 2013
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.04 KB | None | 0 0
  1. /*
  2.  
  3. Jake's Bank!
  4. Create a bank location, Bank in checkpoint using JBank!
  5. Create a bank account (in-game). Using JBank!
  6.  
  7. -------------------------------------
  8.  
  9. Future of SA-MP Bank System!
  10.  
  11. Credits: Jake, Incognito, Y_Less
  12.  
  13. */
  14.  
  15. #include <streamer>
  16. #include <YSI\y_ini>
  17.  
  18. #if defined _jbank_included
  19. #endinput
  20. #endif
  21. #define _jbank_included
  22.  
  23. #define MAX_BANKS 50
  24.  
  25. #if !defined _ALS_
  26. forward public _ALS_();
  27. _ALS_()<_ALS_:unhooked>{}
  28. _ALS_()<_ALS_:hooked>{}
  29. _ALS_()<>{}
  30. #endif
  31.  
  32. #define BankLocation "JBank/Banks/%i.ini"
  33. #define BankALocation "JBank/Accounts/%s.ini"
  34.  
  35. enum E_JBANK_INFO
  36. {
  37. Float:Bx,
  38. Float:By,
  39. Float:Bz,
  40. MapIcon,
  41. CPID,
  42. Int,
  43. VW,
  44. Float:Distance,
  45. Float:CPSIZE,
  46. Text3D:Label,
  47. BName[128],
  48. Iconed,
  49. Labeled,
  50. BID
  51. };
  52. new bankdata[MAX_BANKS][E_JBANK_INFO];
  53. new labelstring[456];
  54.  
  55. enum BaInfo
  56. {
  57. bpass[129],
  58. balances
  59. };
  60. new bainfo[MAX_PLAYERS][BaInfo];
  61.  
  62. forward OnPlayerEnterBank(playerid, bankid);
  63.  
  64. /*
  65. native CreateBank(id, cpid, const name[128], Float:bx, Float:by, Float:bz, Float:cpsize, interior = 0, world = 0, icon = 1, label = 1, Float:streamdistances = 10.0);
  66. native SaveBank(id, string, len);
  67. native LoadBank(id, cpid, string, len);
  68. native CreateBankAccount(playerid, string[256], len, name[24], password[129], balance = 0);
  69. native LoadBankAccount(playerid, string[256], len, name[24]);
  70. native GetBPlayerBalance(playerid);
  71. native GetBPlayerPass(playerid, string[129], len);
  72. native SetBPlayerBalance(playerid, balance);
  73. native ResetBPlayerBalance(playerid);
  74. native SaveBankAccount(playerid, string[256], len, name[24]);
  75. native Bank_Location(id, string[256], len);
  76. native BankAccount_Loc(name[24], string[256], len);
  77. */
  78.  
  79. stock SetBPlayerBalance(playerid, balance)
  80. {
  81. return bainfo[playerid][balances] = balance;
  82. }
  83.  
  84. stock ResetBPlayerBalance(playerid)
  85. {
  86. return bainfo[playerid][balances] = 0;
  87. }
  88.  
  89. stock GetBPlayerBalance(playerid)
  90. {
  91. return bainfo[playerid][balances];
  92. }
  93.  
  94. stock GetBPlayerPass(playerid, string[129], len)
  95. {
  96. format(string, len, "%s", bainfo[playerid][bpass]);
  97. return string;
  98. }
  99.  
  100. stock CreateBankAccount(playerid, string[256], len, name[24], password[129], balance = 0)
  101. {
  102. format(string, len, BankALocation, name);
  103. if(fexist(string)) return print("[pawno/include/JBank.inc]: That bank account already exist!");
  104. new INI:file = INI_Open(string);
  105. INI_SetTag(file, "JBankAccount");
  106. INI_WriteString(file, "BankPassword", password);
  107. INI_WriteInt(file, "BankBalance", balance);
  108. bainfo[playerid][balances] = balance;
  109. INI_Close(file);
  110. return 1;
  111. }
  112.  
  113. stock SaveBankAccount(playerid, string[256], len, name[24])
  114. {
  115. format(string, len, BankALocation, name);
  116. if(fexist(string))
  117. {
  118. new INI:file = INI_Open(string);
  119. INI_SetTag(file, "JBankAccount");
  120. INI_WriteInt(file, "BankBalance", bainfo[playerid][balances]);
  121. INI_Close(file);
  122. }
  123. return 1;
  124. }
  125.  
  126. stock LoadBankAccount(playerid, string[256], len, name[24])
  127. {
  128. format(string, len, BankALocation, name);
  129. if(!fexist(string)) return print("[pawno/include/JBank.ini]: That file doesn't exist!");
  130. else if(fexist(string))
  131. {
  132. INI_ParseFile(string, "loadbaccount_user", .bExtra = true, .extra = playerid);
  133. }
  134. return 1;
  135. }
  136.  
  137. stock CreateBank(id, cpid, const name[128], Float:bx, Float:by, Float:bz, Float:cpsize, interior = 0, world = 0, icon = 1, label = 1, Float:streamdistances = 10.0)
  138. {
  139. bankdata[id][Bx] = bx; bankdata[id][By] = by; bankdata[id][Bz] = bz;
  140. bankdata[id][Int] = interior; bankdata[id][VW] = world; bankdata[id][CPSIZE] = cpsize;
  141. bankdata[id][Distance] = streamdistances; bankdata[id][CPID] = cpid;
  142. bankdata[id][Labeled] = label; bankdata[id][Iconed] = icon; bankdata[id][BID] = id;
  143. format(bankdata[id][BName], 128, "%s", name);
  144. if(icon == 0)
  145. {
  146. }
  147. else if(icon == 1)
  148. {
  149. bankdata[id][MapIcon] = CreateDynamicMapIcon(bankdata[id][Bx], bankdata[id][By], bankdata[id][Bz], 52, -1, bankdata[id][VW], bankdata[id][Int], INVALID_PLAYER_ID, streamdistances);
  150. }
  151. if(label == 0)
  152. {
  153. }
  154. else if(label == 1)
  155. {
  156. format(labelstring, sizeof(labelstring), "[ %s (ID:%i) ]", name, id);
  157. bankdata[id][Label] = CreateDynamic3DTextLabel(labelstring, 0xFFFF00FF, bankdata[id][Bx], bankdata[id][By], bankdata[id][Bz], streamdistances, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, bankdata[id][VW], bankdata[id][Int], INVALID_PLAYER_ID, streamdistances);
  158. }
  159. return bankdata[id][CPID] = CreateDynamicCP(bankdata[id][Bx], bankdata[id][By], bankdata[id][Bz], bankdata[id][CPSIZE], bankdata[id][VW], bankdata[id][Int], INVALID_PLAYER_ID, streamdistances);
  160. }
  161.  
  162. stock SaveBank(id, string[256], len)
  163. {
  164. format(string, len, BankLocation, id);
  165. new INI:file = INI_Open(string);
  166. INI_SetTag(file, "JBank");
  167. INI_WriteInt(file, "ID", bankdata[id][BID]);
  168. INI_WriteString(file, "BankName", bankdata[id][BName]);
  169. INI_WriteFloat(file, "BX", bankdata[id][Bx]);
  170. INI_WriteFloat(file, "BY", bankdata[id][By]);
  171. INI_WriteFloat(file, "BZ", bankdata[id][Bz]);
  172. INI_WriteFloat(file, "CpSize", bankdata[id][CPSIZE]);
  173. INI_WriteInt(file, "Interior", bankdata[id][Int]);
  174. INI_WriteInt(file, "World", bankdata[id][VW]);
  175. INI_WriteInt(file, "Icon", bankdata[id][Iconed]);
  176. INI_WriteInt(file, "Label", bankdata[id][Labeled]);
  177. INI_WriteFloat(file, "StreamDistance", bankdata[id][Distance]);
  178. INI_Close(file);
  179. return 1;
  180. }
  181.  
  182. stock LoadBank(id, cpid, string[256], len)
  183. {
  184. format(string, len, BankLocation, id);
  185. if(!fexist(string)) return print("[pawno/include/JBank.ini]: That file doesn't exist!");
  186. else if(fexist(string))
  187. {
  188. INI_ParseFile(string, "LoadBanks", .bExtra = true, .extra = id);
  189. new strings[128];
  190. format(strings, 128, "%s", bankdata[id][BName]);
  191. CreateBank(bankdata[id][BID], cpid, strings, bankdata[id][Bx], bankdata[id][By], bankdata[id][Bz], bankdata[id][CPSIZE], bankdata[id][VW], bankdata[id][Int], bankdata[id][Iconed], bankdata[id][Labeled], bankdata[id][Distance]);
  192. }
  193. return 1;
  194. }
  195.  
  196. stock Bank_Location(id, string[256], len)
  197. {
  198. format(string, len, BankLocation, id);
  199. if(fexist(string))
  200. {
  201. return 1;
  202. }
  203. else
  204. {
  205. return 0;
  206. }
  207. }
  208.  
  209. stock BankAccount_Loc(name[24], string[256], len)
  210. {
  211. format(string, len, BankALocation, name);
  212. if(fexist(string))
  213. {
  214. return 1;
  215. }
  216. else
  217. {
  218. return 0;
  219. }
  220. }
  221.  
  222. forward LoadBanks(id, name[], value[]);
  223. public LoadBanks(id, name[], value[])
  224. {
  225. INI_String("BankName", bankdata[id][BName], 128);
  226. INI_Float("BX", bankdata[id][Bx]);
  227. INI_Float("BY", bankdata[id][By]);
  228. INI_Float("BZ", bankdata[id][Bz]);
  229. INI_Float("CpSize", bankdata[id][CPSIZE]);
  230. INI_Int("Interior", bankdata[id][Int]);
  231. INI_Int("World", bankdata[id][VW]);
  232. INI_Int("Icon", bankdata[id][Iconed]);
  233. INI_Int("Label", bankdata[id][Labeled]);
  234. INI_Float("StreamDistance", bankdata[id][Distance]);
  235. return 1;
  236. }
  237.  
  238. forward loadbaccount_user(playerid, name[], value[]);
  239. public loadbaccount_user(playerid, name[], value[])
  240. {
  241. INI_String("BankPassword", bainfo[playerid][bpass], 129);
  242. INI_Int("BankBalance", bainfo[playerid][balances]);
  243. return 1;
  244. }
  245.  
  246. public OnPlayerEnterDynamicCP(playerid, checkpointid)
  247. {
  248. state _ALS_:hooked;
  249. for(new i = 0; i < MAX_BANKS; i++)
  250. {
  251. if(checkpointid == bankdata[i][CPID])
  252. {
  253. CallLocalFunction("OnPlayerEnterBank", "ii", playerid, checkpointid);
  254. return jbank_OnPlayerEnterDynamicCP(playerid, checkpointid);
  255. }
  256. }
  257. return jbank_OnPlayerEnterDynamicCP(playerid, checkpointid);
  258. }
  259.  
  260. forward jbank_OnPlayerEnterDynamicCP(playerid, checkpointid);
  261.  
  262. #if defined _ALS_OnPlayerEnterDynamicCP
  263. #undef OnPlayerEnterDynamicCP
  264. #else
  265. #define _ALS_OnPlayerEnterDynamicCP
  266. #endif
  267.  
  268. public jbank_OnPlayerEnterDynamicCP(playerid, checkpointid) <_ALS_:unhooked> return 1;
  269. public jbank_OnPlayerEnterDynamicCP(playerid, checkpointid) <> return 1;
  270.  
  271. #define OnPlayerEnterDynamicCP(%1) jbank_OnPlayerEnterDynamicCP(%1)<_ALS_:hooked>
  272.  
  273. public OnFilterScriptExit()
  274. {
  275. state _ALS_:hooked;
  276. for(new i = 0; i < MAX_BANKS; i++)
  277. {
  278. DestroyDynamicMapIcon(bankdata[i][MapIcon]);
  279. DestroyDynamicCP(bankdata[i][CPID]);
  280. DestroyDynamic3DTextLabel(bankdata[i][Label]);
  281. }
  282. return jbank_OnFilterScriptExit();
  283. }
  284.  
  285. forward jbank_OnFilterScriptExit();
  286.  
  287. #if defined _ALS_OnFilterScriptExit
  288. #undef OnFilterScriptExit
  289. #else
  290. #define _ALS_OnFilterScriptExit
  291. #endif
  292.  
  293. public jbank_OnFilterScriptExit() <_ALS_:unhooked> return 1;
  294. public jbank_OnFilterScriptExit() <> return 1;
  295.  
  296. #define OnFilterScriptExit(%0) jbank_OnFilterScriptExit(%0)<_ALS_:hooked>
  297.  
  298. public OnGameModeExit()
  299. {
  300. state _ALS_:hooked;
  301. for(new i = 0; i < MAX_BANKS; i++)
  302. {
  303. DestroyDynamicMapIcon(bankdata[i][MapIcon]);
  304. DestroyDynamicCP(bankdata[i][CPID]);
  305. DestroyDynamic3DTextLabel(bankdata[i][Label]);
  306. }
  307. return jbank_OnGameModeExit();
  308. }
  309.  
  310. forward jbank_OnGameModeExit();
  311.  
  312. #if defined _ALS_OnGameModeExit
  313. #undef OnGameModeExit
  314. #else
  315. #define _ALS_OnGameModeExit
  316. #endif
  317.  
  318. public jbank_OnGameModeExit() <_ALS_:unhooked> return 1;
  319. public jbank_OnGameModeExit() <> return 1;
  320.  
  321. #define OnGameModeExit(%0) jbank_OnGameModeExit(%0)<_ALS_:hooked>
  322.  
  323. stock getName(playerid) { new pName[24]; GetPlayerName(playerid, pName, sizeof(pName)); return pName; }
Add Comment
Please, Sign In to add comment