· 7 years ago · Oct 03, 2018, 02:42 PM
1/*
2 Bank system by Sheet
3 KészÃtése: 2012.08.12
4 A script terjesztése a tulaj engedélye nélkül szigorúan TILOS!
5
6 CREATE TABLE IF NOT EXISTS `csekk` (
7 `tulaj` text NOT NULL,
8 `megnevez` text NOT NULL,
9 `osszeg` int(11) NOT NULL
10 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
11 CREATE TABLE IF NOT EXISTS `bank` (
12 `tulaj` text NOT NULL,
13 `osszeg` int(11) NOT NULL
14 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
15
16*/
17
18/* Beágyazások */
19#include <a_samp>
20#include <a_mysql>
21#include <sscanf2>
22#include <streamer>
23/* MySQL */
24#define HOST "127.0.0.1"
25#define USER "root"
26#define PASS ""
27#define DATABASE "mybags"
28/* Dialóg */
29#define DIALOG_BANK 123
30#define DIALOG_NINCS 124
31#define DIALOG_BEFIZET 125
32#define DIALOG_FELVESZ 126
33#define DIALOG_HITEL 127
34#define DIALOG_CSEKK 128
35#define DIALOG_UTAL 129
36#define DIALOG_UTAL2 130
37#define DIALOG_MEGSZUNTET 131
38/* SzÃnek */
39#define COLOR_GREEN "{00FF00}"
40#define COLOR_LIGHTRED "{FF6347}"
41#define COLOR_WHITE "{FFFFFF}"
42#define COLOR_ORANGE "{FFA500}"
43#define COLOR_RED 0xFF0000FF
44#define COLOR_GREENS 0x008000FF
45#define COLOR_ORANGES 0xFFA500FF
46/* Bank options */
47#define bankname "Városi Központi Bank"
48#define MAX_HITEL 20000
49new
50 banklist[6][] =
51 {
52 "Készpénzbefizetés" ,
53 "Készpénzfelvétel",
54 "Kölcsönfelvétel",
55 "Csekkek kezelése",
56 "Utalás",
57 "Számla megszüntetése"
58 },
59 bText[128],
60 bank,
61 query[256],
62 line[512],
63 strings[256]
64;
65public OnFilterScriptInit()
66{
67 print(!"MySQL: Kapcsolódási kisérlet a következÅ‘ cÃmre: " HOST " " USER " nevű felhasználóval. \nAz Adatbázis neve: " DATABASE ".");
68 mysql_debug(1);
69 mysql_connect(HOST, USER, DATABASE, PASS);
70 if(mysql_ping() != 1)
71 {
72 print(!"MySQL: Az adatbázishoz való kapcsolódás SIKERTELEN! (" HOST ")");
73 print(!"MySQL: A mód biztonsági okokból leáll!");
74 SendRconCommand(!"exit");
75 return 1;
76 }
77 print(!"MySQL: A kapcsolat sikeresen létrejött a szerver és az adatbázis közt!" HOST "");
78 print(!"MySQL: Az adatbázis kiválasztva! " DATABASE "");
79 mysql_reconnect();
80 print(!"Banksystem By Sheet sikeresen betöltve");
81 CreatePickup(1239, 23,1955.3783, 1343.1572, 15.3746,-1);
82 bank = CreateDynamicSphere(1955.3783, 1343.1572, 15.3746,3.1);
83 for(new i; i < sizeof banklist; ++i)
84 {
85 strcat(bText, banklist[i]);
86 strcat(bText, "\n");
87 }
88 return 1;
89}
90public OnPlayerEnterDynamicArea(playerid,areaid)
91{
92 if(bank == areaid)
93 {
94 format(query, sizeof(query), "SELECT * FROM `bank` WHERE tulaj = '%s'", pName(playerid));
95 mysql_query(query);
96 mysql_store_result();
97 if(!mysql_num_rows()) {
98 format(strings, sizeof(strings), "%sÜdvözöljük bankunkban %s%s!\n%sBankunkban lehetÅ‘sége nyÃlik számlanyitásra, mellyel kényelmesebbé teheti kifizetéseit, utalásait, befizetéseit.\n\n%s((TIPP: Számlanyitáshoz kattint a 'Számlátnyit' gombra!))",COLOR_ORANGE, COLOR_GREEN,pName(playerid), COLOR_ORANGE, COLOR_LIGHTRED);
99 format(query, sizeof(query), "%s%s", COLOR_ORANGE, bankname);
100 ShowPlayerDialog(playerid, DIALOG_NINCS, DIALOG_STYLE_MSGBOX, query, strings, "Számlátnyit", "Kilép");
101 return 1;
102 } else return ShowBank(playerid);
103 }
104 return 1;
105}
106public OnPlayerConnect(playerid)
107{
108 GivePlayerMoney(playerid, 10000);
109 return 1;
110}
111
112public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
113{
114 new params[128];
115 format(params, sizeof(params),"%s", inputtext);
116 if(dialogid == DIALOG_NINCS) {
117 if(!response) return 1;
118 format(query, sizeof(query), "INSERT INTO `bank` (tulaj, osszeg) VALUES ('%s', 0)", pName(playerid));
119 mysql_query(query);
120 SendClientMessage(playerid, COLOR_RED, "Sikeresen regisztráltál egy bankszámlát!");
121 ShowBank(playerid);
122
123 }
124 if(dialogid == DIALOG_BANK)
125 {
126 if(!response) return 1;
127 if(listitem == 0) {
128 format(strings, sizeof(strings), "%s%s - Készpénzbefizetés",COLOR_ORANGE, bankname);
129 format(query, sizeof(query), "%sÜdvözöljük bankunkban!\n%sÖn a készpénzbefizetés lehetÅ‘séget választotta.\n\n%s((TIPP: Az alábbi mezÅ‘be Ãrd a bizetni kÃvánt összeget))", COLOR_ORANGE, COLOR_GREEN, COLOR_LIGHTRED);
130 ShowPlayerDialog(playerid, DIALOG_BEFIZET, DIALOG_STYLE_INPUT, strings, query, "Befizet", "Vissza");
131 }
132 if(listitem == 1) {
133 format(strings, sizeof(strings), "%s%s - Készpénzfelvétel",COLOR_ORANGE, bankname);
134 format(query, sizeof(query), "%sÜdvözöljük bankunkban!\n%sÖn a készpénzfelvétel lehetÅ‘séget választotta.\n\n%s((TIPP: Az alábbi mezÅ‘be Ãrd a felvenni kÃvánt összeget))", COLOR_ORANGE, COLOR_GREEN, COLOR_LIGHTRED);
135 ShowPlayerDialog(playerid, DIALOG_FELVESZ, DIALOG_STYLE_INPUT, strings, query, "Kivesz", "Vissza");
136 }
137 if(listitem == 2) {
138 format(strings, sizeof(strings), "%s%s - Hitelfelvétel",COLOR_ORANGE, bankname);
139 format(query, sizeof(query), "%sÜdvözöljük bankunkban!\n%sÖn a hitelfelvétel lehetÅ‘séget választotta.\n\n%s((TIPP: Az alábbi mezÅ‘be Ãrd a felvenni kÃvánt összeget ( MAX: %d ) ))", COLOR_ORANGE, COLOR_GREEN, COLOR_LIGHTRED, MAX_HITEL);
140 ShowPlayerDialog(playerid, DIALOG_HITEL, DIALOG_STYLE_INPUT, strings, query, "Felvesz", "Vissza");
141 }
142 if(listitem == 3) {
143 format(strings, sizeof(strings), "%s%s - Csekkek",COLOR_ORANGE, bankname);
144 format(query,sizeof(query), "SELECT * FROM `csekk` WHERE `tulaj` = '%s'", pName(playerid));
145 mysql_query(query);
146 mysql_store_result();
147 new rows = mysql_num_rows();
148 if(rows != 0)
149 {
150 new csekk[3][32];
151 new csekkstring[1024];
152 while(mysql_fetch_row_format(line, "|"))
153 {
154 split(line, csekk, '|');
155 if(strval(csekk[2]) > 0) format(csekkstring, sizeof(csekkstring),"%s\nKiállÃtó: %s %sÉrték: %i",csekkstring,csekk[1],COLOR_GREEN,strval(csekk[2]));
156 else {
157 new a = (-(strval(csekk[2])));
158 format(csekkstring, sizeof(csekkstring),"%s\nKiállÃtó: %s %sFizetendÅ‘: %i",csekkstring,csekk[1],COLOR_LIGHTRED,a);
159 }
160 }
161 ShowPlayerDialog(playerid,DIALOG_CSEKK,DIALOG_STYLE_LIST,strings,csekkstring,"Mindet bevált","Vissza");
162 } else {
163 SendClientMessage(playerid,COLOR_RED,"Nincs beváltandó, befizetendő csekked!");
164 ShowBank(playerid);
165 }
166 mysql_free_result();
167 }
168 if(listitem == 4) {
169 format(strings, sizeof(strings), "%s%s - Utalás",COLOR_ORANGE, bankname);
170 format(query, sizeof(query), "%sÜdvözöljük bankunkban!\n%sÖn az utalás lehetÅ‘séget választotta.\n\n%s((TIPP: Az alábbi mezÅ‘be Ãrd az utalni kÃvánt összeget! ))", COLOR_ORANGE, COLOR_GREEN, COLOR_LIGHTRED);
171 ShowPlayerDialog(playerid, DIALOG_UTAL, DIALOG_STYLE_INPUT, strings, query, "Tovább", "Vissza");
172 }
173 if(listitem == 5) {
174 format(strings, sizeof(strings), "%s%s - Utalás",COLOR_ORANGE, bankname);
175 format(query, sizeof(query), "%sÜdvözöljük bankunkban!\n%sÖn a számla megszüntetési lehetÅ‘ségünket választotta.\nKérjük erÅ‘sÃtse meg ezen szándékát!)", COLOR_ORANGE, COLOR_LIGHTRED);
176 ShowPlayerDialog(playerid, DIALOG_MEGSZUNTET, DIALOG_STYLE_MSGBOX, strings, query, "Megszüntet", "Vissza");
177 }
178 }
179 if(dialogid == DIALOG_BEFIZET)
180 {
181 if(!response) { ShowBank(playerid); return 1; }
182 if(!isNumeric(params)) {SendClientMessage(playerid, COLOR_RED, "Kérlek számot adj meg!"); ShowBank(playerid); return 1;}
183 new money[128], osszeg;
184 format(query,sizeof(query), "SELECT * FROM `bank` WHERE `tulaj` = '%s'", pName(playerid));
185 mysql_query(query);
186 mysql_store_result();
187 mysql_fetch_row(line);
188 mysql_get_field("osszeg", money);
189 mysql_free_result();
190 if(strval(inputtext) > GetPlayerMoney(playerid)) { ShowBank(playerid); SendClientMessage(playerid, COLOR_RED, "Nincs nálad ennyi pénz"); return 1;}
191 osszeg = strval(money) + strval(inputtext);
192 format(query, sizeof(query), "UPDATE `bank` SET `osszeg` = '%d' WHERE tulaj = '%s'", osszeg, pName(playerid));
193 mysql_query(query);
194 GivePlayerMoney(playerid, -strval(inputtext));
195 SendClientMessage(playerid, COLOR_GREENS, "Sikeres készpénzbefizetés!");
196 }
197 if(dialogid == DIALOG_FELVESZ)
198 {
199 if(!response) { ShowBank(playerid); return 1; }
200 if(!isNumeric(params)) {SendClientMessage(playerid, COLOR_RED, "Kérlek számot adj meg!"); ShowBank(playerid); return 1;}
201 new money[128], osszeg;
202 format(query,sizeof(query), "SELECT * FROM `bank` WHERE `tulaj` = '%s'", pName(playerid));
203 mysql_query(query);
204 mysql_store_result();
205 mysql_fetch_row(line);
206 mysql_get_field("osszeg", money);
207 mysql_free_result();
208 if(strval(money) < strval(inputtext)) { ShowBank(playerid); SendClientMessage(playerid, COLOR_RED, "Nincs a számládon ennyi pénz"); return 1;}
209 osszeg = strval(money) - strval(inputtext);
210 format(query, sizeof(query), "UPDATE `bank` SET `osszeg` = '%d' WHERE tulaj = '%s'", osszeg, bankname, pName(playerid));
211 mysql_query(query);
212 GivePlayerMoney(playerid, strval(inputtext));
213 SendClientMessage(playerid, COLOR_GREENS, "Sikeres készpénzfelvétel!");
214 }
215 if(dialogid == DIALOG_HITEL)
216 {
217 if(!response) { ShowBank(playerid); return 1; }
218 if(!isNumeric(params)) {SendClientMessage(playerid, COLOR_RED, "Kérlek számot adj meg!"); ShowBank(playerid); return 1;}
219 new ok[128], osszeg;
220 format(query,sizeof(query), "SELECT * FROM `csekk` WHERE `tulaj` = '%s'", pName(playerid));
221 mysql_query(query);
222 mysql_store_result();
223 new row = mysql_num_rows();
224 mysql_free_result();
225 if(row != 0)
226 {
227 SendClientMessage(playerid,COLOR_RED,"Csak akkor vehetsz kölcsönt, ha már nincs beváltandó/befizetendő csekked!");
228 ShowBank(playerid);
229 return 1;
230 }
231 if(strval(inputtext) > MAX_HITEL) return SendClientMessage(playerid, COLOR_RED, "Ennyi hitelt nem vehetsz fel!");
232 format(query,sizeof(query), "SELECT * FROM `bank` WHERE `tulaj` = '%s'", pName(playerid));
233 mysql_query(query);
234 mysql_store_result();
235 mysql_fetch_row(line);
236 mysql_get_field("osszeg", ok);
237 mysql_free_result();
238 osszeg = strval(ok) + strval(inputtext);
239 format(query, sizeof(query), "UPDATE `bank` SET `osszeg` = '%d' WHERE tulaj = '%s'", osszeg, pName(playerid));
240 mysql_query(query);
241 format(query, sizeof(query), "INSERT INTO `csekk` (tulaj, megnevez, osszeg) VALUES ('%s', '%s', -%d)", pName(playerid), bankname,strval(inputtext));
242 mysql_query(query);
243 SendClientMessage(playerid, COLOR_GREENS, "Sikeres hitelfelvétel!");
244 format(strings, sizeof(strings), "A Bank kiállÃtott a nevedre egy %d értékű befizetendÅ‘ csekket!", strval(inputtext));
245 SendClientMessage(playerid, COLOR_ORANGES, strings);
246 ShowBank(playerid);
247 }
248 if(dialogid == DIALOG_CSEKK)
249 {
250 if(!response) { ShowBank(playerid); return 1; }
251 format(query,sizeof(query), "SELECT osszeg FROM `csekk` WHERE `tulaj` = '%s'", pName(playerid));
252 mysql_query(query);
253 mysql_store_result();
254 new balance = 0, money, line2[256];
255 if(mysql_num_rows() != 0){ while (mysql_fetch_row(line2)) { sscanf(line2,"p<|>i",money); balance += money; }}
256 if(balance < 0) {
257 if(GetPlayerMoney(playerid) < balance) return SendClientMessage(playerid,COLOR_RED,"Nincs elég kézpénzed!");
258 GivePlayerMoney(playerid,balance);
259 format(strings,sizeof(strings),"Csekkeidet sikeresen befizetted/beváltottad. Befizetett összeg:%s %d$",COLOR_LIGHTRED, balance);
260 } else {
261 GivePlayerMoney(playerid,balance);
262 format(strings,sizeof(strings),"Csekkeidet sikeresen befizetted/beváltottad. Felvett összeg:%s %d$",COLOR_GREEN, balance);
263 }
264 format(query,sizeof(query), "DELETE FROM `csekk` WHERE `tulaj` = '%s'", pName(playerid));
265 mysql_query(query);
266 SendClientMessage(playerid, COLOR_ORANGES,strings);
267 ShowBank(playerid);
268 }
269 if(dialogid == DIALOG_UTAL)
270 {
271 if(!response) { ShowBank(playerid); return 1; }
272 new money[128];
273 if(!isNumeric(params)) {SendClientMessage(playerid, COLOR_RED, "Kérlek számot adj meg!"); ShowBank(playerid); return 1;}
274 format(query,sizeof(query), "SELECT * FROM `bank` WHERE `tulaj` = '%s'", pName(playerid));
275 mysql_query(query);
276 mysql_store_result();
277 mysql_fetch_row(line);
278 mysql_get_field("osszeg", money);
279 mysql_free_result();
280 if(strval(money) < strval(inputtext)) { ShowBank(playerid); SendClientMessage(playerid, COLOR_RED, "Nincs a számládon ennyi pénz"); return 1;}
281 SetPVarInt(playerid, "utalmoney", strval(inputtext));
282 format(strings, sizeof(strings), "%s%s - Utalás",COLOR_ORANGE, bankname);
283 format(query, sizeof(query), "%sAz utalás már majdnem elkészült! Kérlek add meg a személy nevét akinek utalod a pénzt.\n\n%s((TIPP: Az alábbi mezÅ‘be Ãrd az utalni kÃvánt összeget! ))", COLOR_ORANGE, COLOR_LIGHTRED);
284 ShowPlayerDialog(playerid, DIALOG_UTAL2, DIALOG_STYLE_INPUT, strings, query, "Utal", "Vissza");
285 }
286 if(dialogid == DIALOG_UTAL2)
287 {
288 if(!response) { ShowBank(playerid); return 1; }
289 if(isNumeric(params)) {SendClientMessage(playerid, COLOR_RED, "Kérlek ne számot adj meg!"); ShowBank(playerid); return 1;}
290 format(query, sizeof(query), "SELECT osszeg FROM `bank` WHERE `tulaj` = '%s'", inputtext);
291 mysql_query(query);
292 mysql_store_result();
293 if(!mysql_num_rows()) {ShowBank(playerid); SendClientMessage(playerid,COLOR_RED,"Nincs ilyen név az adatbázisban!"); return 1; }
294 mysql_free_result();
295 format(query,sizeof(query), "UPDATE `bank` SET osszeg = osszeg+%d WHERE `tulaj` = '%s'", GetPVarInt(playerid,"utalmoney"),inputtext);
296 mysql_query(query);
297 ShowBank(playerid);
298 format(query,sizeof(query), "UPDATE `bank` SET osszeg = osszeg-%d WHERE `tulaj` = '%s'", GetPVarInt(playerid,"utalmoney"),pName(playerid));
299 mysql_query(query);
300 }
301 if(dialogid == DIALOG_MEGSZUNTET)
302 {
303 if(!response) { ShowBank(playerid); return 1; }
304 format(query,sizeof(query), "SELECT * FROM `csekk` WHERE `tulaj` = '%s'", pName(playerid));
305 mysql_query(query);
306 mysql_store_result();
307 new row = mysql_num_rows();
308 mysql_free_result();
309 if(row != 0)
310 {
311 SendClientMessage(playerid,COLOR_RED,"Csak akkor szüntetheted meg a számlád, ha már nincs beváltandó/befizetendő csekked!");
312 ShowBank(playerid);
313 return 1;
314 }
315 format(query, sizeof(query), "DELETE FROM `bank` WHERE `tulaj` = '%s'", pName(playerid));
316 mysql_query(query);
317 SendClientMessage(playerid, COLOR_RED, "Bankszámlád sikeresen megszüntetve!");
318 }
319 return 1;
320}
321stock pName(playerid)
322{
323 new name[24];
324 GetPlayerName(playerid, name, 24);
325 return name;
326}
327ShowBank(playerid)
328{
329 new balance, name[MAX_PLAYER_NAME];
330 format(query, sizeof(query), "SELECT * FROM `bank` WHERE tulaj = '%s'",pName(playerid));
331 mysql_query(query);
332 mysql_store_result();
333 mysql_fetch_row(line);
334 mysql_free_result();
335 sscanf(line, "p<|>s[25]d", name, balance);
336 format(strings, sizeof(strings), "%s%s számlája - %sEgyenleg: %d",COLOR_WHITE,name,(balance == 0) ? (COLOR_LIGHTRED) : (COLOR_GREEN), balance);
337 ShowPlayerDialog(playerid, DIALOG_BANK, DIALOG_STYLE_LIST, strings, bText, "Kiválaszt", "Kilép");
338 return 1;
339}
340split(const strsrc[], strdest[][], delimiter = '|')
341{
342 new i, li, aNum, len, srclen = strlen(strsrc);
343 while(i <= srclen)
344 {
345 if (strsrc[i] == delimiter || i == srclen)
346 {
347 len = strmid(strdest[aNum], strsrc, li, i, 128);
348 strdest[aNum][len] = 0;
349 li = i + 1;
350 aNum++;
351 }
352 i++;
353 }
354}
355stock isNumeric(const string[]) {
356 new length=strlen(string);
357 if (length==0) return false;
358 for (new i = 0; i < length; i++) {
359 if (
360 (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
361 || (string[i]=='-' && i!=0) //
362 || (string[i]=='+' && i!=0) //
363 ) return false;
364 }
365 if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
366 return true;
367}