Advertisement
Guest User

Untitled

a guest
Dec 20th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.06 KB | None | 0 0
  1. /*
  2. Bankssystem by Items4Landwirt aka Music4You
  3.  
  4. - Es ist verboten meinen Namen aus dem Skript zu löschen!
  5. - Es ist verboten Dieses Skript nocheinmal zu veröffentlichen
  6. - Es ist verboten Dieses Skript als eigenes auszugeben.
  7.  
  8. Ich danke BlackAce für sein gutes Tutorial für SQLlite.
  9. http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/tutorials/121557-sqlite-die-alternative-zu-mysql/
  10.  
  11. Nun noch ein Paar YT Kanäle, von guten Freunden
  12. Music4You http://www.youtube.com/user/Music4You43
  13. Items4Sacred http://www.youtube.com/user/items4sacred
  14. Metalletsplay666 http://www.youtube.com/user/MetalLetsPlay666
  15.  
  16. */
  17. #define FILTERSCRIPT
  18.  
  19. ////=============== Includes ===============
  20. #include <a_samp>
  21. #include <ocmd>
  22. #include <streamer>
  23.  
  24. //=============== Defines ===============
  25. #define rot 0xFF0A00FF
  26. #define gruen 0x4BB400FF
  27.  
  28. #define SCM SendClientMessage
  29.  
  30. #define Bankmenu 1001
  31. #define Einzahlung 1002
  32. #define Kontostand 1003
  33. #define Auszahlung 1004
  34. #define Pinauswahl 1005
  35. #define Pinaueingabe 1006
  36. #define bankhelp 1007
  37. #define Ueberweisung 1008
  38. #define Summe 1009
  39. #define Fehler 1010
  40.  
  41. #define MAX_ATMS 20
  42.  
  43. ////=============== News ===============
  44. new DB:Database;
  45. new bankein;
  46. new bankaus;
  47.  
  48. new ueberweisman[MAX_PLAYERS];
  49.  
  50. enum bank
  51. {
  52. Guthaben,
  53. Konto
  54. }
  55. new BankInfo[MAX_PLAYERS][bank];
  56.  
  57. enum ATM
  58. {
  59. ID,
  60. Float:X,
  61. Float:Y,
  62. Float:Z,
  63. Float:Angle,
  64. atmobjekt,
  65. bool:erstellt
  66. }
  67. new ATMInfo[MAX_ATMS][ATM];
  68.  
  69.  
  70. enum pInfo
  71. {
  72.  
  73. pAdmin
  74.  
  75. }
  76. new PlayerInfo[MAX_PLAYERS][pInfo];
  77.  
  78. public OnFilterScriptInit()
  79. {
  80. print("\n=================================================");
  81. print(" SQLLite Banksystem by Music4You aka Items4Landwirt");
  82. print("===================================================\n");
  83.  
  84. Database = db_open("Bank.db");
  85. db_query(Database,"CREATE TABLE IF NOT EXISTS `bank`(`Name`,`Konto`,`Pin`,`Guthaben`)");
  86. db_query(Database,"CREATE TABLE IF NOT EXISTS `atm`(`ID`,`X`,`Y`,`Z`,`A`)");
  87.  
  88. new DBResult:Result, str[512], rows;
  89. for(new i=0;i<MAX_ATMS;i++)
  90. {
  91. format(str,sizeof(str),"SELECT * FROM `atm` WHERE `ID` = '%i'",i);
  92. Result = db_query(Database,str);
  93. rows = db_num_rows(Result);
  94. if(rows == 0)continue;
  95. db_get_field_assoc(Result,"X",str,sizeof(str));
  96. ATMInfo[i][X]=floatstr(str);
  97. db_get_field_assoc(Result,"Y",str,sizeof(str));
  98. ATMInfo[i][Y]=floatstr(str);
  99. db_get_field_assoc(Result,"Z",str,sizeof(str));
  100. ATMInfo[i][Z]=floatstr(str);
  101. db_get_field_assoc(Result,"A",str,sizeof(str));
  102. ATMInfo[i][Angle]=floatstr(str);
  103.  
  104. ATMInfo[i][erstellt] = true;
  105. ATMInfo[i][atmobjekt] = CreateDynamicObject(2942,ATMInfo[i][X],ATMInfo[i][Y],ATMInfo[i][Z]-0.5,0,0,ATMInfo[i][Angle]);
  106. db_free_result(Result);
  107. }
  108. //=============== bank interior ===============
  109. CreateObject(14789, 1424.690308, -1004.066162, 1643.018677, 0.0000, 0.0000, 90.0000);
  110. CreateObject(2774, 1433.026245, -1004.643921, 1635.819824, 0.0000, 0.0000, 0.0000);
  111. CreateObject(2774, 1429.296997, -1004.618652, 1641.281128, 0.0000, 0.0000, 0.0000);
  112. CreateObject(2774, 1440.957031, -979.682068, 1640.297729, 0.0000, 0.0000, 0.0000);
  113. CreateObject(2774, 1429.337158, -979.545288, 1639.723389, 0.0000, 0.0000, 0.0000);
  114. CreateObject(2774, 1449.314087, -984.505005, 1648.023193, 0.0000, 0.0000, 0.0000);
  115. CreateObject(2774, 1413.914063, -984.515381, 1643.073486, 0.0000, 0.0000, 0.0000);
  116. CreateObject(1886, 1448.510132, -1003.642944, 1647.093994, 19.7670, 0.0000, 223.3584);
  117. CreateObject(1886, 1414.706543, -980.604431, 1647.061646, 19.7670, 0.0000, 43.3584);
  118. CreateObject(2774, 1430.416870, -999.017273, 1638.722412, 0.0000, 269.7592, 0.0000);
  119. CreateObject(2774, 1408.149292, -998.996826, 1638.722412, 0.0000, 269.7592, 180.0000);
  120. CreateObject(2774, 1443.577271, -986.634644, 1638.723389, 0.0000, 269.7592, 270.0000);
  121. CreateObject(2774, 1443.604492, -998.998169, 1647.797485, 0.0000, 0.0000, 0.0000);
  122. CreateObject(11359, 1414.356201, -988.985352, 1639.795898, 0.0000, 0.0000, 90.0000);
  123. CreateObject(2774, 1413.927368, -986.011719, 1643.046997, 0.0000, 0.0000, 270.0000);
  124. CreateObject(2774, 1413.763672, -992.085388, 1643.673340, 0.0000, 0.0000, 0.0000);
  125. CreateObject(626, 1427.554565, -997.322998, 1640.766479, 0.0000, 0.0000, 135.0000);
  126. CreateObject(626, 1427.488281, -990.752502, 1640.841553, 0.0000, 0.0000, 135.0000);
  127. CreateObject(2773, 1427.756714, -995.781189, 1639.310181, 0.0000, 0.0000, 0.0000);
  128. CreateObject(2773, 1427.694946, -992.841431, 1639.310181, 0.0000, 0.0000, 0.0000);
  129. CreateObject(2773, 1427.596924, -989.128601, 1639.301514, 0.0000, 0.0000, 0.0000);
  130. CreateObject(2773, 1429.863159, -982.927368, 1639.310181, 0.0000, 0.0000, 90.0000);
  131. CreateObject(626, 1427.665283, -983.128601, 1640.841553, 0.0000, 0.0000, 236.2500);
  132. CreateObject(2773, 1432.755859, -982.990784, 1639.310181, 0.0000, 0.0000, 90.0000);
  133. CreateObject(626, 1434.648315, -983.188904, 1640.841553, 0.0000, 0.0000, 236.2500);
  134. CreateObject(2773, 1437.091431, -983.054993, 1639.310181, 0.0000, 0.0000, 90.0000);
  135. CreateObject(2773, 1440.040283, -983.012756, 1639.310181, 0.0000, 0.0000, 90.0000);
  136. CreateObject(3462, 1448.466919, -993.014465, 1640.297974, 0.0000, 0.0000, 0.0000);
  137. CreateObject(3462, 1448.512085, -982.992615, 1640.181519, 0.0000, 0.0000, 0.0000);
  138. CreateObject(626, 1441.636230, -997.047729, 1640.741455, 0.0000, 0.0000, 146.2500);
  139. CreateObject(14632, 1443.648682, -995.934631, 1638.667725, 0.0000, 0.0000, 90.0000);
  140. CreateObject(14632, 1432.156372, -1018.015259, 1639.988159, 0.0000, 0.0000, 270.0000);
  141. CreateObject(1514, 1432.294922, -998.852478, 1639.740112, 0.0000, 0.0000, 180.0000);
  142. CreateObject(1514, 1438.352539, -998.846741, 1639.815674, 0.0000, 0.0000, 180.0000);
  143. CreateObject(2773, 1435.183838, -996.759277, 1639.301514, 0.0000, 0.0000, 0.0000);
  144. CreateObject(2773, 1435.152466, -993.932556, 1639.301514, 0.0000, 0.0000, 0.0000);
  145. CreateObject(2773, 1439.338623, -996.658691, 1639.301514, 0.0000, 0.0000, 0.0000);
  146. CreateObject(2773, 1439.288940, -994.000671, 1639.301514, 0.0000, 0.0000, 0.0000);
  147. CreateObject(1723, 1426.280151, -994.863586, 1638.707275, 0.0000, 0.0000, 270.0000);
  148. CreateObject(1723, 1426.244629, -991.150452, 1638.732300, 0.0000, 0.0000, 270.0000);
  149. CreateObject(1723, 1422.277466, -996.935059, 1638.682251, 0.0000, 0.0000, 90.0000);
  150. CreateObject(1723, 1422.279297, -993.210022, 1638.657227, 0.0000, 0.0000, 90.0000);
  151. CreateObject(2637, 1424.232422, -992.173584, 1638.838745, 0.0000, 0.0000, 270.0000);
  152. CreateObject(2637, 1424.228516, -995.704163, 1638.838745, 0.0000, 0.0000, 270.0000);
  153. CreateObject(3657, 1432.633301, -987.739014, 1639.202393, 0.0000, 0.0000, 0.0000);
  154. CreateObject(3657, 1432.631104, -986.977234, 1639.202393, 0.0000, 0.0000, 180.0000);
  155. CreateObject(3657, 1438.111572, -986.977539, 1639.202393, 0.0000, 0.0000, 180.0000);
  156. CreateObject(3657, 1438.086304, -987.730713, 1639.227417, 0.0000, 0.0000, 0.0000);
  157. CreateObject(2961, 1439.028320, -999.826660, 1639.211304, 0.0000, 0.0000, 0.0000);
  158. CreateObject(2961, 1433.505615, -999.827637, 1639.301392, 0.0000, 0.0000, 0.0000);
  159. CreateObject(2946, 1414.355225, -990.513489, 1638.755615, 0.0000, 0.0000, 0.0000);
  160. CreateObject(2946, 1414.380249, -987.392517, 1638.755005, 0.0000, 0.0000, 180.0000);
  161. CreateObject(2963, 1424.165283, -1004.815674, 1640.781128, 0.0000, 0.0000, 270.0000);
  162. CreateObject(2963, 1426.806763, -1004.832520, 1640.826904, 0.0000, 0.0000, 90.0000);
  163. CreateObject(1886, 1414.730591, -993.523010, 1646.908569, 17.1887, 0.0000, 67.5000);
  164. CreateObject(2773, 1431.414551, -996.845825, 1639.301514, 0.0000, 0.0000, 0.0000);
  165. CreateObject(2773, 1431.473389, -994.017090, 1639.301514, 0.0000, 0.0000, 0.0000);
  166. CreateObject(632, 1434.735352, -987.757507, 1639.131226, 0.0000, 0.0000, 213.7500);
  167. CreateObject(2942, 1417.713623, -980.475159, 1639.363525, 0.0000, 0.0000, 0.0000);
  168. CreateObject(1216, 1443.281372, -989.311279, 1639.387817, 0.0000, 0.0000, 270.0000);
  169. CreateObject(2942, 1421.217163, -980.448914, 1639.385498, 0.0000, 0.0000, 0.0000);
  170. CreateObject(2942, 1424.630493, -980.526672, 1639.371460, 0.0000, 0.0000, 0.0000);
  171. CreateObject(1216, 1443.277832, -991.424866, 1639.424194, 0.0000, 0.0000, 270.0000);
  172. CreateObject(1216, 1443.251221, -987.278198, 1639.376221, 0.0000, 0.0000, 270.0000);
  173. CreateObject(1216, 1443.259766, -985.484985, 1639.376221, 0.0000, 0.0000, 270.0000);
  174. CreateObject(2773, 1441.228638, -993.042969, 1639.301514, 0.0000, 0.0000, 270.0000);
  175. CreateObject(2824, 1424.297241, -992.054932, 1639.247681, 0.0000, 0.0000, 78.7500);
  176.  
  177. bankein = CreatePickup(1318,1,1462.2754,-1011.1824,26.8438,-1);
  178. bankaus = CreatePickup(1318,1,1414.7997,-989.0223,1639.7843,-1);
  179. return 1;
  180. }
  181.  
  182. public OnFilterScriptExit()
  183. {
  184. for(new i = 0; i < MAX_PLAYERS; i++)
  185. {
  186. SaveBank(i);
  187. }
  188. return 1;
  189. }
  190.  
  191. public OnPlayerConnect(playerid)
  192. {
  193. new DBResult:Result, str[512];
  194. format(str, sizeof(str), "SELECT * FROM `bank` WHERE Name = '%s'",SpielerName(playerid));
  195. Result = db_query(Database,str);
  196.  
  197. db_get_field_assoc(Result,"Konto",str,sizeof(str));
  198. BankInfo[playerid][Konto]=strval(str);
  199. db_get_field_assoc(Result,"Guthaben",str,sizeof(str));
  200. BankInfo[playerid][Guthaben]=strval(str);
  201. db_free_result(Result);
  202. return 1;
  203. }
  204.  
  205. public OnPlayerDisconnect(playerid, reason)
  206. {
  207. SaveBank(playerid);
  208. return 1;
  209. }
  210.  
  211. ocmd:atm(playerid,params[])
  212. {
  213. if(BankInfo[playerid][Konto]!=1) return SCM(playerid,rot,"Du hast kein Bankkonto");
  214. if(IsATM(playerid) != -1)
  215. {
  216. ShowPlayerDialog(playerid,Pinaueingabe,DIALOG_STYLE_INPUT,"Pineingabe","Gebe nun deinen Bankpin ein, um auf dein Bankkonto zuzugreifen","Weiter","Abbrechen");
  217. }
  218. else
  219. {
  220. SCM(playerid,rot,"Du bist an keinem ATM");
  221. }
  222. return 1;
  223. }
  224. ocmd:bank(playerid,params[])
  225. {
  226. new query[128];
  227. if(!IsPlayerInRangeOfPoint(playerid,10,1417.7145,-981.6283,1639.7843)) return SCM(playerid,rot,"Du bist nicht in Der Bank");
  228. if(BankInfo[playerid][Konto]!=0) return SCM(playerid,rot,"Du hast bereits ein Bankkonto");
  229. ShowPlayerDialog(playerid,Pinauswahl,DIALOG_STYLE_INPUT,"Pineingabe","Um ein Bankkonto zu erstellen musst du vorher einen Sicheren Bankpin eingeben,\n diesen musst du dir merken!","Weiter","");
  230. format(query,sizeof(query),"INSERT INTO `bank` (`Name`) VALUES ('%s')",SpielerName(playerid));
  231. db_query(Database,query);
  232. return 1;
  233. }
  234. ocmd:bankhilfe(playerid,params[])
  235. {
  236. SCM(playerid,gruen,"/bank -> Bankkonto erstellen, nur in der Bank");
  237. SCM(playerid,gruen,"/atm -> Bankkonto aufrufen, nur in der Bank");
  238. return 1;
  239. }
  240. ocmd:catm(playerid,params[])
  241. {
  242. new Float:x,Float:y,Float:z,Float:a, query[256];
  243. if(PlayerInfo[playerid][pAdmin] >= 1) return SCM(playerid,rot,"Du bist nicht befugt!");
  244. GetPlayerPos(playerid, x, y, z);
  245. GetPlayerFacingAngle(playerid,a);
  246. for(new i = 0;i < MAX_ATMS; i++)
  247. {
  248. if(ATMInfo[i][erstellt] == true)continue;
  249. ATMInfo[i][erstellt] = true;
  250. ATMInfo[i][X] = x;
  251. ATMInfo[i][Y] = y;
  252. ATMInfo[i][Z] = z;
  253. ATMInfo[i][Angle] = a;
  254. ATMInfo[i][atmobjekt] = CreateDynamicObject(2942,x,y,z-0.5,0,0,a);
  255. format(query,sizeof(query),"INSERT INTO `atm` (`ID`, `X`,`Y`,`Z`,`A`) VALUES ('%i','%f','%f','%f','%f')",i,x,y,z,a);
  256. db_query(Database,query);
  257. SCM(playerid,gruen,"ATM erstellt");
  258. return 1;
  259. }
  260. return 1;
  261. }
  262. ocmd:delatm(playerid, params[])
  263. {
  264. if(PlayerInfo[playerid][pAdmin] >= 1) return SCM(playerid,rot,"Du bist nicht befugt!");
  265. new id = IsATM(playerid),query[256];
  266. if(id != -1)
  267. {
  268. ATMInfo[id][erstellt] = false;
  269. ATMInfo[id][X] = 0.0;
  270. ATMInfo[id][Y] = 0.0;
  271. ATMInfo[id][Z] = 0.0;
  272. ATMInfo[id][Angle] = 0;
  273. SCM(playerid,gruen,"Du hast den ATM gelöscht");
  274. DestroyDynamicObject(ATMInfo[id][atmobjekt]);
  275.  
  276. format(query,sizeof(query),"SELECT * FROM atm WHERE ID = '%d'",id);
  277. format(query,sizeof(query),"DELETE FROM atm WHERE ID = '%d'",id);
  278. db_query(Database,query);
  279. return 1;
  280. }
  281. else
  282. {
  283. SCM(playerid,rot,"Du bist an keinem ATM");
  284. }
  285. return 1;
  286. }
  287. ocmd:delallatm(playerid,params[])
  288. {
  289. if(PlayerInfo[playerid][pAdmin] >= 1) return SCM(playerid,rot,"Du bist nicht befugt!");
  290. for(new i=0,query[128];i<MAX_ATMS;i++)
  291. {
  292. ATMInfo[i][erstellt] = false;
  293. ATMInfo[i][X] = 0.0;
  294. ATMInfo[i][Y] = 0.0;
  295. ATMInfo[i][Z] = 0.0;
  296. ATMInfo[i][Angle] = 0;
  297. DestroyDynamicObject(ATMInfo[i][atmobjekt]);
  298.  
  299. format(query,sizeof(query),"SELECT * FROM atm WHERE ID = '%d'",i);
  300. format(query,sizeof(query),"DELETE FROM atm WHERE ID = '%d'",i);
  301. db_query(Database,query);
  302. }
  303. SCM(playerid,gruen,"Du hast alle ATMs gelöscht");
  304. return 1;
  305. }
  306.  
  307. public OnPlayerPickUpPickup(playerid, pickupid)
  308. {
  309. if(pickupid == bankein)
  310. {
  311. SetPlayerPos(playerid,1417.2261,-989.1280,1639.7843);
  312. SetPlayerInterior(playerid,0);
  313. }
  314. if(pickupid == bankaus)
  315. {
  316. SetPlayerPos(playerid,1462.1182,-1013.4483,26.8438);
  317. SetPlayerInterior(playerid,0);
  318. }
  319. return 1;
  320. }
  321.  
  322.  
  323. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  324. {
  325. switch(dialogid)
  326. {
  327. case Pinauswahl:
  328. {
  329. if(response)
  330. {
  331. if(!strlen(inputtext))
  332. {
  333. ShowPlayerDialog(playerid,Pinauswahl,DIALOG_STYLE_INPUT,"Pineingabe","Um ein Bankkonto zu erstellen musst du vorher einen Sicheren Bankpin eingeben,\n diesen musst du dir merken!","Weiter","");
  334. return 1;
  335. }
  336. new query[128];
  337. format(query,128,"UPDATE `bank` SET `Pin` = '%s' WHERE `Name` = '%s'",inputtext,SpielerName(playerid));
  338. db_query(Database,query);
  339. BankInfo[playerid][Konto]=1;
  340. BankInfo[playerid][Guthaben]+=300;
  341. SCM(playerid,gruen,"konto erstellt");
  342. }
  343. }
  344. case Pinaueingabe:
  345. {
  346. if(response)
  347. {
  348. new str[128],DBResult:Result;
  349. format(str, sizeof(str), "SELECT * FROM `bank` WHERE Name = '%s' AND Pin = '%s'",SpielerName(playerid),inputtext);
  350. Result = db_query(Database,str);
  351. if(db_num_rows(Result) > 0)
  352. {
  353. ShowPlayerDialog(playerid,Bankmenu,DIALOG_STYLE_LIST,"Transaktionen","Einzahlung\nAuszahlung\nKontostand\nÜberweisen","Wählen","Beenden");
  354. }
  355. else
  356. {
  357. ShowPlayerDialog(playerid,Pinaueingabe,DIALOG_STYLE_INPUT,"Pineingabe","Gebe nun deinen Bankpin ein, um auf dein Bankkonto zuzugreifen","Weiter","Abbrechen");
  358. }
  359. db_free_result(Result);
  360. }
  361. }
  362. case Bankmenu:
  363. {
  364. if(response)
  365. {
  366. if(listitem == 0)
  367. {
  368. ShowPlayerDialog(playerid,Einzahlung,DIALOG_STYLE_INPUT,"Einzahlung","Summe eingeben:","Einzahlen","Verlassen");
  369. }
  370. if(listitem == 1)
  371. {
  372. ShowPlayerDialog(playerid,Auszahlung,DIALOG_STYLE_INPUT,"Auszahlung","Summe eingeben:","Auszahlen","Verlassen");
  373. }
  374. if(listitem == 2)
  375. {
  376. new str[128];
  377. format(str,sizeof(str),"Kontostand: %d$",BankInfo[playerid][Guthaben]);
  378. ShowPlayerDialog(playerid,Kontostand,DIALOG_STYLE_MSGBOX,"Kontostand",str,"Schließen","");
  379. }
  380. if(listitem == 3)
  381. {
  382.  
  383. }
  384. }
  385. }
  386. case Einzahlung:
  387. {
  388. new str[128];
  389. if(!response)return ShowPlayerDialog(playerid,Bankmenu,DIALOG_STYLE_LIST,"Transaktionen","Einzahlung\nAuszahlung\nKontostand\nÜberweisen","Wählen","Beenden");
  390. if(GetPlayerMoney(playerid) < strval(inputtext))return SendClientMessage(playerid,rot,"Du hast nicht genug Geld dabei!");
  391. GivePlayerMoney(playerid, - strval(inputtext));
  392. BankInfo[playerid][Guthaben] += strval(inputtext);
  393. format(str,sizeof(str),"Sie haben %d$ auf ihr Konto eingezahlt",strval(inputtext));
  394. SCM(playerid,gruen,str);
  395. }
  396. case Auszahlung:
  397. {
  398. new str[128];
  399. if(!response)return ShowPlayerDialog(playerid,Bankmenu,DIALOG_STYLE_LIST,"Transaktionen","Einzahlung\nAuszahlung\nKontostand\nÜberweisen","Wählen","Beenden");
  400. if(BankInfo[playerid][Guthaben] < strval(inputtext))return SendClientMessage(playerid,rot,"Du hast nicht genug auf dem Konto!");
  401. GivePlayerMoney(playerid,strval(inputtext));
  402. BankInfo[playerid][Guthaben] -= strval(inputtext);
  403. format(str,sizeof(str),"Sie haben %d$ von ihrem Konto abgehoben",strval(inputtext));
  404. SCM(playerid,gruen,str);
  405. }
  406. case Ueberweisung:
  407. {
  408. new pID;
  409. if(!response)return ShowPlayerDialog(playerid,Bankmenu,DIALOG_STYLE_LIST,"Transaktionen","Einzahlung\nAuszahlung\nKontostand\nÜberweisung","Wählen","Beenden");
  410. if(sscanf(inputtext,"u",pID))return ShowPlayerDialog(playerid,Fehler,DIALOG_STYLE_MSGBOX,"Transaktion","Ungültige Angabe!","Schließen","") ;
  411. if(!IsPlayerConnected(pID))return ShowPlayerDialog(playerid,Fehler,DIALOG_STYLE_MSGBOX,"Transaktion","Ungültiger Empfänger!","Schließen","") ;
  412. if (pID == playerid)return ShowPlayerDialog(playerid,Fehler,DIALOG_STYLE_MSGBOX,"Transaktion","Ungültiger Empfänger!","Schließen","") ;
  413. ShowPlayerDialog(playerid,Summe,DIALOG_STYLE_INPUT,"Überweisung","Summe eingeben:","Überweisen","Verlassen");
  414. ueberweisman[playerid] = pID;
  415. ueberweisman[pID] = playerid;
  416. }
  417. case Summe:
  418. {
  419. new pID = ueberweisman[playerid];
  420. new str[128],str2[128];
  421. if(!response)return ShowPlayerDialog(playerid,Bankmenu,DIALOG_STYLE_LIST,"Transaktionen","Einzahlung\nAuszahlung\nKontostand\nÜberweisung","Wählen","Beenden");
  422. if(GetPlayerMoney(playerid)< strval(inputtext))return SendClientMessage(playerid,rot,"Du hast nicht genug Geld auf dem Konto!");
  423. BankInfo[playerid][Guthaben] -= strval(inputtext);
  424. BankInfo[pID][Guthaben] += strval(inputtext);
  425. format(str,sizeof(str),"Sie haben %d$ auf das Konto von %s überwiesen",strval(inputtext),SpielerName(pID));
  426. SCM(playerid,gruen,str);
  427. format(str2,sizeof(str2),"%s hat ihnen %d$ auf ihr Konto überwiesen",SpielerName(playerid),strval(inputtext));
  428. SendClientMessage(pID,gruen,str2);
  429. }
  430. }
  431. return 0;
  432. }
  433.  
  434. stock SpielerName(playerid)
  435. {
  436. new name[MAX_PLAYER_NAME];
  437. GetPlayerName(playerid,name,sizeof(name));
  438. return name;
  439. }
  440. stock SaveBank(playerid)
  441. {
  442. new query[128];
  443. format(query,128,"UPDATE `bank` SET `Konto` = '%i', `Guthaben` = '%i' WHERE `Name` = '%s'",BankInfo[playerid][Konto],BankInfo[playerid][Guthaben],SpielerName(playerid));
  444. db_query(Database,query);
  445. return 1;
  446. }
  447. stock IsATM(playerid)
  448. {
  449. new i=0;
  450. while(i != MAX_ATMS)
  451. {
  452. if(IsPlayerInRangeOfPoint(playerid, 3.0, ATMInfo[i][X], ATMInfo[i][Y], ATMInfo[i][Z]) || IsPlayerInRangeOfPoint(playerid,10,1417.7145,-981.6283,1639.7843))
  453. {
  454. return i;
  455. }
  456. i++;
  457. }
  458. return -1;
  459. }
  460.  
  461. stock sscanf(string[], format[], {Float,_}:...)
  462. {
  463. #if defined isnull
  464. if (isnull(string))
  465. #else
  466. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  467. #endif
  468. {
  469. return format[0];
  470. }
  471. #pragma tabsize 4
  472. new
  473. formatPos = 0,
  474. stringPos = 0,
  475. paramPos = 2,
  476. paramCount = numargs(),
  477. delim = ' ';
  478. while (string[stringPos] && string[stringPos] <= ' ')
  479. {
  480. stringPos++;
  481. }
  482. while (paramPos < paramCount && string[stringPos])
  483. {
  484. switch (format[formatPos++])
  485. {
  486. case '\0':
  487. {
  488. return 0;
  489. }
  490. case 'i', 'd':
  491. {
  492. new
  493. neg = 1,
  494. num = 0,
  495. ch = string[stringPos];
  496. if (ch == '-')
  497. {
  498. neg = -1;
  499. ch = string[++stringPos];
  500. }
  501. do
  502. {
  503. stringPos++;
  504. if ('0' <= ch <= '9')
  505. {
  506. num = (num * 10) + (ch - '0');
  507. }
  508. else
  509. {
  510. return -1;
  511. }
  512. }
  513. while ((ch = string[stringPos]) > ' ' && ch != delim);
  514. setarg(paramPos, 0, num * neg);
  515. }
  516. case 'h', 'x':
  517. {
  518. new
  519. num = 0,
  520. ch = string[stringPos];
  521. do
  522. {
  523. stringPos++;
  524. switch (ch)
  525. {
  526. case 'x', 'X':
  527. {
  528. num = 0;
  529. continue;
  530. }
  531. case '0' .. '9':
  532. {
  533. num = (num << 4) | (ch - '0');
  534. }
  535. case 'a' .. 'f':
  536. {
  537. num = (num << 4) | (ch - ('a' - 10));
  538. }
  539. case 'A' .. 'F':
  540. {
  541. num = (num << 4) | (ch - ('A' - 10));
  542. }
  543. default:
  544. {
  545. return -1;
  546. }
  547. }
  548. }
  549. while ((ch = string[stringPos]) > ' ' && ch != delim);
  550. setarg(paramPos, 0, num);
  551. }
  552. case 'c':
  553. {
  554. setarg(paramPos, 0, string[stringPos++]);
  555. }
  556. case 'f':
  557. {
  558.  
  559. new changestr[16], changepos = 0, strpos = stringPos;
  560. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  561. {
  562. changestr[changepos++] = string[strpos++];
  563. }
  564. changestr[changepos] = '\0';
  565. setarg(paramPos,0,_:floatstr(changestr));
  566. }
  567. case 'p':
  568. {
  569. delim = format[formatPos++];
  570. continue;
  571. }
  572. case '\'':
  573. {
  574. new
  575. end = formatPos - 1,
  576. ch;
  577. while ((ch = format[++end]) && ch != '\'') {}
  578. if (!ch)
  579. {
  580. return -1;
  581. }
  582. format[end] = '\0';
  583. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  584. {
  585. if (format[end + 1])
  586. {
  587. return -1;
  588. }
  589. return 0;
  590. }
  591. format[end] = '\'';
  592. stringPos = ch + (end - formatPos);
  593. formatPos = end + 1;
  594. }
  595. case 'u':
  596. {
  597. new
  598. end = stringPos - 1,
  599. id = 0,
  600. bool:num = true,
  601. ch;
  602. while ((ch = string[++end]) && ch != delim)
  603. {
  604. if (num)
  605. {
  606. if ('0' <= ch <= '9')
  607. {
  608. id = (id * 10) + (ch - '0');
  609. }
  610. else
  611. {
  612. num = false;
  613. }
  614. }
  615. }
  616. if (num && IsPlayerConnected(id))
  617. {
  618. setarg(paramPos, 0, id);
  619. }
  620. else
  621. {
  622. #if !defined foreach
  623. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  624. #define __SSCANF_FOREACH__
  625. #endif
  626. string[end] = '\0';
  627. num = false;
  628. new
  629. name[MAX_PLAYER_NAME];
  630. id = end - stringPos;
  631. foreach (Player, playerid)
  632. {
  633. GetPlayerName(playerid, name, sizeof (name));
  634. if (!strcmp(name, string[stringPos], true, id))
  635. {
  636. setarg(paramPos, 0, playerid);
  637. num = true;
  638. break;
  639. }
  640. }
  641. if (!num)
  642. {
  643. setarg(paramPos, 0, INVALID_PLAYER_ID);
  644. }
  645. string[end] = ch;
  646. #if defined __SSCANF_FOREACH__
  647. #undef foreach
  648. #undef __SSCANF_FOREACH__
  649. #endif
  650. }
  651. stringPos = end;
  652. }
  653. case 's', 'z':
  654. {
  655. new
  656. i = 0,
  657. ch;
  658. if (format[formatPos])
  659. {
  660. while ((ch = string[stringPos++]) && ch != delim)
  661. {
  662. setarg(paramPos, i++, ch);
  663. }
  664. if (!i)
  665. {
  666. return -1;
  667. }
  668. }
  669. else
  670. {
  671. while ((ch = string[stringPos++]))
  672. {
  673. setarg(paramPos, i++, ch);
  674. }
  675. }
  676. stringPos--;
  677. setarg(paramPos, i, '\0');
  678. }
  679. default:
  680. {
  681. continue;
  682. }
  683. }
  684. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  685. {
  686. stringPos++;
  687. }
  688. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  689. {
  690. stringPos++;
  691. }
  692. paramPos++;
  693. }
  694. do
  695. {
  696. if ((delim = format[formatPos++]) > ' ')
  697. {
  698. if (delim == '\'')
  699. {
  700. while ((delim = format[formatPos++]) && delim != '\'') {}
  701. }
  702. else if (delim != 'z')
  703. {
  704. return delim;
  705. }
  706. }
  707. }
  708. while (delim > ' ');
  709. return 0;
  710. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement