hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 17:57



Jelenlévő felhasználók

Jelenleg 215 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 214 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: zp_bank
HozzászólásElküldve: 2014.02.12. 03:03 
Offline
Őskövület
Avatar

Csatlakozott: 2011.12.28. 00:35
Hozzászólások: 2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Hali.

Valaki ezt ki tudná javítani? (Letöltöttem és alapból ez volt a hiba...)

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <sqlx>
  5. #include <zombieplague>
  6.  
  7. #define PLUGIN "[ZP]Addons: Bank SQL"
  8. #define VERSION "0.9.2"
  9. #define AUTHOR "Epmak"
  10.  
  11.  
  12. #pragma semicolon 1
  13.  
  14. #if !defined MAX_PLAYERS
  15. #define MAX_PLAYERS 32
  16. #endif
  17.  
  18. new PLUGIN_NAME[] = "[ZP]Addons: Bank SQL";
  19. new PLUGIN_VERSION[] = "0.9.2";
  20. new PLUGIN_AUTHOR[] = "Epmak";
  21.  
  22.  
  23.  
  24. enum vars_struct {
  25. mode=0,
  26. annonce,
  27.  
  28. save_limit,
  29. save_days,
  30. save_type,
  31.  
  32. block_cname,
  33. startedammo,
  34. allow_passwd,
  35. allow_donate,
  36.  
  37. bool:round_end,
  38.  
  39. _pw_str[32],
  40. table[32],
  41. config_dir[128]
  42. };
  43.  
  44. enum bank_struct {
  45. bool:ingame,
  46. bool:async,
  47. bool:loggin,
  48. auth[36],
  49. passwd[32],
  50. amount
  51. }
  52.  
  53. new g_vars[vars_struct];
  54. new g_Bank[MAX_PLAYERS+1][bank_struct];
  55. new Handle:g_Sql = Empty_Handle,Handle:g_SqlTuple = Empty_Handle;
  56.  
  57. public plugin_init()
  58. {
  59. register_plugin(PLUGIN, VERSION, AUTHOR)
  60. register_cvar("zp_bank_sql", PLUGIN_VERSION, FCVAR_SERVER);
  61.  
  62. register_dictionary("zp_bank.txt");
  63. register_dictionary("common.txt");
  64.  
  65. register_clcmd("say", "handle_say");
  66. register_clcmd("say_team", "handle_say");
  67.  
  68. register_concmd("zp_bank_show", "cmdBankShow", ADMIN_ADMIN);
  69. register_concmd("zp_bank_set", "cmdBankSet", ADMIN_RCON, "<name or #userid> <+ or ->amount");
  70.  
  71. g_vars[startedammo] = get_cvar_pointer("zp_starting_ammo_packs");
  72.  
  73. register_srvcmd("zp_bank_connect", "db_connect");
  74.  
  75. register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");
  76.  
  77. server_cmd("zp_bank_connect");
  78. }
  79.  
  80. public plugin_precache()
  81. {
  82. get_configsdir(g_vars[config_dir], 127);
  83.  
  84. g_vars[mode] = register_cvar("zp_bank", "1");
  85. g_vars[annonce] = register_cvar("zp_bank_annonce", "360.0");
  86. g_vars[save_limit] = register_cvar("zp_bank_save_limit", "1000");
  87. g_vars[save_days] = register_cvar("zp_bank_save_days", "24");
  88. g_vars[save_type] = register_cvar("zp_bank_save_type", "2");
  89. g_vars[block_cname] = register_cvar("zp_bank_block_name_change", "1");
  90. g_vars[allow_passwd] = register_cvar("zp_bank_allow_passwd", "1");
  91. g_vars[allow_donate] = register_cvar("zp_bank_allow_donate", "1");
  92.  
  93. register_cvar("zp_bank_host", "127.0.0.1");
  94. register_cvar("zp_bank_user", "root");
  95. register_cvar("zp_bank_pass", "");
  96. register_cvar("zp_bank_db", "amxx");
  97. register_cvar("zp_bank_type", "mysql");
  98. register_cvar("zp_bank_table", "zp_bank");
  99. register_cvar("zp_bank_pw_str", "_bpw");
  100.  
  101. server_cmd("exec %s/zp_bank.cfg", g_vars[config_dir]);
  102. server_exec();
  103. }
  104.  
  105. public plugin_cfg()
  106. {
  107. g_vars[mode] = get_pcvar_num(g_vars[mode]);
  108. g_vars[save_limit] = get_pcvar_num(g_vars[save_limit]);
  109. g_vars[save_days] = get_pcvar_num(g_vars[save_days]);
  110. g_vars[save_type] = get_pcvar_num(g_vars[save_type]);
  111. g_vars[block_cname] = get_pcvar_num(g_vars[block_cname]);
  112. g_vars[allow_passwd] = get_pcvar_num(g_vars[allow_passwd]);
  113. g_vars[allow_donate] = get_pcvar_num(g_vars[allow_donate]);
  114.  
  115. if(g_vars[save_limit] < 0) g_vars[save_limit] = 0;
  116.  
  117. if(get_pcvar_num(g_vars[annonce]))
  118. set_task(get_pcvar_float(g_vars[annonce]), "print_annonce",_,_,_,"b");
  119.  
  120. get_cvar_string("zp_bank_pw_str", g_vars[_pw_str], 31);
  121. }
  122.  
  123. public plugin_end()
  124. {
  125. if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);
  126. if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple);
  127. }
  128.  
  129. public zp_round_started(gamemode, id)
  130. {
  131. g_vars[round_end] = false;
  132. }
  133.  
  134. public zp_round_ended(winteam)
  135. {
  136. if (!g_vars[mode] || g_Sql == Empty_Handle)
  137. return ;
  138.  
  139. static i;
  140. for(i=1;i<=MAX_PLAYERS;i++)
  141. {
  142. if(!g_Bank[i][ingame] || !g_Bank[i][loggin] || !g_Bank[i][async])
  143. continue;
  144.  
  145. SaveClientBank(i);
  146. }
  147.  
  148. g_vars[round_end] = true;
  149. }
  150.  
  151. public client_connect(id)
  152. {
  153. if (!g_vars[mode])
  154. return ;
  155.  
  156. GetAuthId(id, g_Bank[id][auth],35);
  157.  
  158. g_Bank[id][amount] = 0;
  159. g_Bank[id][async] = false;
  160. g_Bank[id][loggin] = false;
  161.  
  162. if(g_vars[mode] == 2)
  163. zp_set_user_ammo_packs(id, get_pcvar_num(g_vars[startedammo]));
  164.  
  165. LoadClientBank(id);
  166. }
  167.  
  168. public client_putinserver(id)
  169. {
  170. g_Bank[id][ingame] = true;
  171.  
  172. if(g_Bank[id][async] == true && g_Bank[id][loggin] == true)
  173. SetAmmoBank(id, g_Bank[id][amount]);
  174. }
  175.  
  176. public client_disconnect(id)
  177. {
  178. if (!g_vars[mode] || g_Sql == Empty_Handle)
  179. return ;
  180.  
  181. if(g_vars[round_end] == false && g_Bank[id][async] == true && g_Bank[id][loggin] == true)
  182. SaveClientBank(id);
  183.  
  184. g_Bank[id][ingame] = false;
  185. g_Bank[id][auth][0] = '^0';
  186. g_Bank[id][passwd][0] = '^0';
  187. }
  188.  
  189. public cmdBankShow(id, level, cid)
  190. {
  191. if (!cmd_access(id, level, cid, 1))
  192. return PLUGIN_HANDLED;
  193.  
  194. static pl_name[32], pl_amount[11], i;
  195. console_print(id, "%33s amount","name");
  196. for(i=1;i<=MAX_PLAYERS;i++)
  197. {
  198. if(!g_Bank[i][ingame]) continue;
  199.  
  200. get_user_name(i,pl_name,31);
  201.  
  202. if(!g_Bank[i][async])
  203. pl_amount = "not loaded";
  204. else if(!g_Bank[i][loggin])
  205. pl_amount = "not loggin";
  206. else
  207. num_to_str(GetAmmoBank(i),pl_amount,10);
  208.  
  209. console_print(id, "%33s %s", pl_name, pl_amount);
  210. }
  211.  
  212. return PLUGIN_HANDLED;
  213. }
  214.  
  215. public cmdBankSet(id, level, cid)
  216. {
  217. if (!cmd_access(id, level, cid, 3))
  218. return PLUGIN_HANDLED;
  219.  
  220. static s_player[32], player, s_amount[12], i_amount;
  221. read_argv(1, s_player, 31);
  222. player = cmd_target(id, s_player, CMDTARGET_ALLOW_SELF);
  223.  
  224. if (!player)
  225. return PLUGIN_HANDLED;
  226.  
  227. get_user_name(player,s_player,31);
  228. if(!g_Bank[player][async])
  229. {
  230. console_print(id,"The player '%s' has not loaded bank", s_player);
  231. return PLUGIN_HANDLED;
  232. }
  233. else if(!g_Bank[player][loggin])
  234. {
  235. console_print(id,"The player '%s' has not loggin bank", s_player);
  236. return PLUGIN_HANDLED;
  237. }
  238.  
  239. read_argv(2, s_amount, 11);
  240. remove_quotes(s_amount);
  241. i_amount = str_to_num(s_amount);
  242.  
  243. switch(s_amount[0])
  244. {
  245. case '+':
  246. SetAmmoBank(player, GetAmmoBank(player)+i_amount);
  247. case '-':
  248. SetAmmoBank(player, GetAmmoBank(player)-(0-i_amount));
  249. default:
  250. SetAmmoBank(player,i_amount);
  251. }
  252.  
  253. return PLUGIN_HANDLED;
  254. }
  255.  
  256. public print_annonce()
  257. {
  258. if (!g_vars[mode] || g_Sql == Empty_Handle)
  259. return ;
  260.  
  261. print_color(0, "!g[Resident Evil]!t A szerver lőszercsomag bankot használ!");
  262. if(g_vars[mode] == 1)
  263. {
  264. print_color(0, "!g[Resident Evil]!y A berakáshoz használd a!t /deposit <ertek>!y parancsot.");
  265. print_color(0, "!g[Resident Evil]!y A kiszedéshez használd a!t /withdraw <ertek>!y parancsot.");
  266. }
  267. else
  268. {
  269. print_color(0, "!g[Resident Evil]!t A szerver automatikus menti a loszercsomagodat!");
  270. }
  271. }
  272.  
  273. public db_loadcurrent()
  274. {
  275. for(new i=1;i<=MAX_PLAYERS;i++)
  276. {
  277. if(g_Bank[i][async] || !g_Bank[i][ingame]) continue;
  278.  
  279. LoadClientBank(i);
  280. }
  281. }
  282.  
  283. public db_connect(count)
  284. {
  285. if(!g_vars[mode])
  286. return ;
  287.  
  288. new host[64], user[32], pass[32], db[128];
  289. new get_type[13], set_type[12];
  290. new error[128], errno;
  291.  
  292. get_cvar_string("zp_bank_host", host, 63);
  293. get_cvar_string("zp_bank_user", user, 31);
  294. get_cvar_string("zp_bank_pass", pass, 31);
  295. get_cvar_string("zp_bank_type", set_type, 11);
  296. get_cvar_string("zp_bank_db", db, 127);
  297. get_cvar_string("zp_bank_table", g_vars[table], 31);
  298.  
  299. if(is_module_loaded(set_type) == -1)
  300. {
  301. server_print("^r^n%s error: module '%s' not loaded.^r^n%s Add line %s to %s/modules.ini and restart server^r^n", set_type, set_type, g_vars[config_dir]);
  302. return ;
  303. }
  304.  
  305. SQL_GetAffinity(get_type, 12);
  306.  
  307. if (!equali(get_type, set_type))
  308. if (!SQL_SetAffinity(set_type))
  309. log_amx("Failed to set affinity from %s to %s.", get_type, set_type);
  310.  
  311. g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db);
  312.  
  313. g_Sql = SQL_Connect(g_SqlTuple, errno, error, 127);
  314.  
  315. if (g_Sql == Empty_Handle)
  316. {
  317. server_print("%s SQL Error #%d - %s", errno, error);
  318.  
  319. count += 1;
  320. set_task(10.0, "db_connect", count);
  321.  
  322. return ;
  323. }
  324.  
  325. SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8");
  326.  
  327. if (equali(set_type, "sqlite") && !sqlite_TableExists(g_Sql, g_vars[table])) SQL_QueryAndIgnore(g_Sql, "CREATE TABLE %s (auth VARCHAR(36) PRIMARY KEY, password VARCHAR(32) NOT NULL DEFAULT '', amount INTEGER DEFAULT 0, timestamp INTEGER NOT NULL DEFAULT 0)",g_vars[table]);
  328. else if (equali(set_type, "mysql")) SQL_QueryAndIgnore(g_Sql,"CREATE TABLE IF NOT EXISTS `%s` (`auth` VARCHAR(36) NOT NULL, `password` VARCHAR(32) NOT NULL DEFAULT '', `amount` INT(10) NOT NULL DEFAULT 0, `timestamp` INT(10) NOT NULL DEFAULT 0, PRIMARY KEY (`auth`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", g_vars[table]);
  329.  
  330. CleanDataBase();
  331. if(count > 1)
  332. db_loadcurrent();
  333.  
  334. server_print("%s connected to: '%s://%s:****@%s/%s/%s'",set_type, user, host, db, g_vars[table]);
  335. }
  336.  
  337. public CleanDataBase()
  338. {
  339. SQL_QueryAndIgnore(g_Sql, "DELETE FROM %s WHERE amount='0' AND password = '';", g_vars[table]);
  340.  
  341. if (!g_vars[save_days]) return ;
  342.  
  343. new curTime = get_systime();
  344. curTime -= ((g_vars[save_days] * 24) * 3600);
  345.  
  346. SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_vars[table], curTime);
  347. }
  348.  
  349. public fwClientUserInfoChanged(id, buffer)
  350. {
  351. if (!g_vars[mode] || !is_user_connected(id))
  352. return FMRES_IGNORED;
  353.  
  354. new name[32], val[32], name_1[] = "name";
  355. get_user_name(id, name, 31);
  356. engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31);
  357. if (equal(val, name))
  358. return FMRES_IGNORED;
  359.  
  360. if(g_vars[block_cname])
  361. {
  362. engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name);
  363. client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);
  364. console_print(id, "%L", id ,"NO_NAME_CHANGE");
  365. }
  366. else
  367. {
  368. GetAuthId(id,g_Bank[id][auth],35);
  369. return FMRES_IGNORED;
  370. }
  371.  
  372. return FMRES_SUPERCEDE;
  373. }
  374.  
  375. public handle_say(id)
  376. {
  377. if(!g_vars[mode])
  378. {
  379. print_color(id, "!g[Resident Evil]!t A bank le van tiltva.");
  380.  
  381. return PLUGIN_CONTINUE;
  382. }
  383. else if(g_Sql == Empty_Handle)
  384. {
  385. print_color(id, "!g[Resident Evil]!t A bank ideiglenesen nem elérhető!");
  386.  
  387. return PLUGIN_CONTINUE;
  388. }
  389. else if (!g_Bank[id][async])
  390. return PLUGIN_CONTINUE;
  391.  
  392. new text[60], command[16], command2[32], password[32], set_packs;
  393. read_args(text, 59);
  394. remove_quotes(text);
  395.  
  396. command[0] = '^0';
  397. command2[0] = '^0';
  398. password[0] = '^0';
  399. parse(text, command, 15, command2, 31, password, 31);
  400.  
  401. if (equali(command, "/", 1))
  402. format(command, 15, command[1]);
  403.  
  404. if (g_vars[allow_donate] && equali(command, "kuldes", 6))
  405. {
  406. donate(id, command2, str_to_num(password));
  407. }
  408. else if (equali(command, "mybank", 6) || equali(command, "bank", 4))
  409. {
  410. if(g_vars[save_type] == 2 && g_vars[allow_passwd])
  411. {
  412. if(equali(command2, "login", 5))
  413. {
  414. if(g_Bank[id][loggin]) {
  415. print_color(id, "!g[Resident Evil]!t Már be vagy jelentkezve.");
  416. return PLUGIN_HANDLED;
  417. }
  418.  
  419. if(g_Bank[id][passwd][0] && equal(password, g_Bank[id][passwd]))
  420. {
  421. g_Bank[id][loggin] = true;
  422. SetAmmoBank(id, g_Bank[id][amount]);
  423. client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);
  424. print_color(id, "!g[Resident Evil]!t Sikeresen beléptél.");
  425. }
  426. else
  427. {
  428. print_color(id, "!g[Resident Evil]!t Hibás jelszó!");
  429. }
  430.  
  431. return PLUGIN_HANDLED;
  432. }
  433. else if(!g_Bank[id][loggin])
  434. {
  435. print_color(id, "!g[Resident Evil]!y Belépéshez írd a chatbe!t /bank login <jelszavad>!y parancsot.");
  436. return PLUGIN_HANDLED;
  437. }
  438. else if(equali(command2, "password", 8))
  439. {
  440. if(password[0])
  441. {
  442. g_Bank[id][passwd] = password;
  443. client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);
  444. print_color(id, "!g[Resident Evil]!y Jelszó beállítva! Ne felejtsd el a jelszavad:!t %s", g_Bank[id][passwd]);
  445. }
  446. else
  447. {
  448. print_color(id, "!g[Resident Evil]!y Jelenlegi jelszó:!t %s", g_Bank[id][passwd]);
  449. }
  450. return PLUGIN_HANDLED;
  451. }
  452. else if(!g_Bank[id][passwd][0])
  453. print_color(id, "!g[Resident Evil]!y Jelszó beállításhoz írd a chatbe!t /bank password <jelszo>");
  454. }
  455.  
  456. if(g_vars[mode] == 2)
  457. {
  458. print_color(id, "!g[Resident Evil]!t A szerver automatikus menti a lőszercsomagodat!");
  459. return PLUGIN_CONTINUE;
  460. }
  461.  
  462. print_color(id, "!g[Resident Evil]!y Jelenleg!t %d!y lőszercsomagod van a bankodban.", g_Bank[id][amount]);
  463. print_color(id, "!g[Resident Evil]!y A berakáshoz használd a!t /deposit <ertek>!y parancsot.");
  464. print_color(id, "!g[Resident Evil]!y A kiszedéshez használd a!t /withdraw <ertek>!y parancsot.");
  465. }
  466. else if (g_vars[mode] == 2)
  467. return PLUGIN_CONTINUE;
  468. else if (equali(command, "deposit", 7) || equali(command, "send", 4) || equali(command, "store", 5))
  469. {
  470. new user_ammo_packs = zp_get_user_ammo_packs(id);
  471.  
  472. if (equali(command2, "all")) set_packs = user_ammo_packs;
  473. else set_packs = str_to_num(command2);
  474.  
  475. new limit_exceeded=false;
  476.  
  477. if (g_vars[save_limit] && set_packs > 0 && g_Bank[id][amount] + set_packs > g_vars[save_limit])
  478. {
  479. new overflow = g_Bank[id][amount] + set_packs - g_vars[save_limit];
  480. set_packs -= overflow;
  481.  
  482. print_color(id, "!g[Resident Evil]!y Meghaladtad a megengedhető lőszercsomagot, maximum:!t %d", g_vars[save_limit]);
  483.  
  484. limit_exceeded = true;
  485. }
  486.  
  487. if (set_packs > 0)
  488. {
  489. if (user_ammo_packs >= set_packs)
  490. {
  491. g_Bank[id][amount] += set_packs;
  492. zp_set_user_ammo_packs(id, user_ammo_packs - set_packs);
  493. print_color(id, "!g[Resident Evil]!y Beraktál!t %d!y lőszercsomagot, jelenleg a bankodban!t %d!y lőszercsomag van.", set_packs, g_Bank[id][amount]);
  494. }
  495. else
  496. print_color(id, "!g[Resident Evil]!y Ez!t (%d)!y több, mint amennyi lőszercsomagod van!t (%d)", set_packs, user_ammo_packs);
  497.  
  498. return PLUGIN_HANDLED;
  499. }
  500. else if(!limit_exceeded)
  501. print_color(id, "!g[Resident Evil]!y A berakáshoz használd a!t /deposit <ertek>!y parancsot.");
  502. }
  503. else if (equali(command, "withdraw", 8) || equali(command, "take", 4) || equali(command, "retrieve", 8) || equali(command, "wd", 2))
  504. {
  505. new user_ammo_packs = zp_get_user_ammo_packs(id);
  506.  
  507. if (equali(command2, "all")) set_packs = g_Bank[id][amount];
  508. else set_packs = str_to_num(command2);
  509.  
  510. if (set_packs > 0)
  511. {
  512. if (g_Bank[id][amount] >= set_packs)
  513. {
  514. zp_set_user_ammo_packs(id, user_ammo_packs + set_packs);
  515. g_Bank[id][amount] -= set_packs;
  516. print_color(id, "!g[Resident Evil]!y Kivettél!t %d!y lőszercsomagot, már csak!t %d!y lőszercsomagod van a bankodban.", set_packs, g_Bank[id][amount]);
  517. }
  518. else
  519. print_color(id, "!g[Resident Evil]!y Ez!t (%d)!y több, mint amennyi a bankodban van!t (%d)", set_packs, g_Bank[id][amount]);
  520.  
  521. return PLUGIN_HANDLED;
  522. }
  523. else
  524. print_color(id, "!g[Resident Evil]!y A kiszedéshez használd a!t /withdraw <ertek>!y parancsot.");
  525. }
  526.  
  527. return PLUGIN_CONTINUE;
  528. }
  529.  
  530. public donate(donater, const reciever_name[], ammo)
  531. {
  532. if(!reciever_name[0] || ammo <= 0 || zp_get_user_ammo_packs(donater) < ammo)
  533. {
  534. print_color(0, "!g[Resident Evil]!t ->>!y Lőszercsomag Küldes:!t /donate <jatekos> <ertek>.");
  535. return ;
  536. }
  537.  
  538. new reciever = cmd_target(donater, reciever_name, CMDTARGET_ALLOW_SELF);
  539. if (!reciever || reciever == donater)
  540. {
  541. print_color(0, "!g[Resident Evil]!t Nincs ilyen nevű játékos.");
  542. return ;
  543. }
  544.  
  545. zp_set_user_ammo_packs(donater, zp_get_user_ammo_packs(donater)-ammo);
  546. zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever)+ammo);
  547. }
  548.  
  549. public LoadClientBank(id)
  550. {
  551. if (g_SqlTuple == Empty_Handle || g_Sql == Empty_Handle || g_Bank[id][async] == true)
  552. return ;
  553.  
  554. new szQuery[120];
  555. format(szQuery, 119,"SELECT amount,password FROM %s WHERE auth='%s';", g_vars[table], g_Bank[id][auth]);
  556.  
  557. new szData[2];
  558. szData[0] = id;
  559. szData[1] = get_user_userid(id);
  560.  
  561. SQL_ThreadQuery(g_SqlTuple, "LoadClient_QueryHandler", szQuery, szData, 2);
  562. }
  563.  
  564. public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime)
  565. {
  566. if(iFailState != TQUERY_SUCCESS)
  567. {
  568. log_amx("%s SQL Error #%d - %s", iErrnum, szError);
  569. return ;
  570. }
  571.  
  572. new id = szData[0];
  573.  
  574. if (szData[1] != get_user_userid(id))
  575. return ;
  576.  
  577. new packs=0,info_pw[32];
  578.  
  579. if(g_vars[mode] == 2)
  580. packs = get_pcvar_num(g_vars[startedammo]);
  581.  
  582. if(SQL_NumResults(hQuery))
  583. {
  584. packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount"));
  585. SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "password"), g_Bank[id][passwd], 31);
  586. }
  587.  
  588. g_Bank[id][amount] = CheckLimit(packs);
  589. if(g_vars[allow_passwd] && g_Bank[id][passwd][0])
  590. {
  591. get_user_info(id,g_vars[_pw_str],info_pw,31);
  592. if(equal(info_pw, g_Bank[id][passwd]))
  593. {
  594. g_Bank[id][loggin] = true;
  595. }
  596. }
  597. else
  598. g_Bank[id][loggin] = true;
  599.  
  600. if(g_Bank[id][ingame] == true && g_Bank[id][loggin] == true)
  601. {
  602. SetAmmoBank(id, g_Bank[id][amount]);
  603. }
  604. g_Bank[id][async] = true;
  605. }
  606.  
  607. public SaveClientBank(id)
  608. {
  609. if (g_Sql == Empty_Handle)
  610. return ;
  611.  
  612. new packs = GetAmmoBank(id);
  613. packs = CheckLimit(packs);
  614.  
  615. SQL_QuoteString(g_Sql, g_Bank[id][passwd], 31, g_Bank[id][passwd]);
  616. SQL_QueryAndIgnore(g_Sql, "REPLACE INTO %s (auth,password,amount,timestamp) VALUES('%s', '%s', %d, %d);", g_vars[table], g_Bank[id][auth], g_Bank[id][passwd], packs, get_systime());
  617. }
  618.  
  619. stock GetAuthId(id, Buffer[]="", BufferSize=0)
  620. {
  621. switch(g_vars[save_type])
  622. {
  623. case 1: get_user_authid(id,Buffer,BufferSize);
  624. case 2:
  625. {
  626. new name[32];
  627. get_user_name(id,name,31);
  628. SQL_QuoteString(g_Sql, Buffer, BufferSize, name);
  629. }
  630. case 3: get_user_ip(id,Buffer,BufferSize,true);
  631. }
  632. }
  633.  
  634. public CheckLimit(packs)
  635. {
  636. if(g_vars[save_limit] && packs > g_vars[save_limit])
  637. {
  638. packs = g_vars[save_limit];
  639. }
  640. return packs;
  641. }
  642.  
  643. public SetAmmoBank(id, packs)
  644. {
  645. if(g_vars[mode] == 2)
  646. zp_set_user_ammo_packs(id,packs);
  647. else
  648. g_Bank[id][amount] = packs;
  649. }
  650.  
  651. public GetAmmoBank(id)
  652. {
  653. if(g_vars[mode] == 2)
  654. return zp_get_user_ammo_packs(id);
  655.  
  656. return g_Bank[id][amount];
  657. }
  658.  
  659.  
  660. stock print_color(const id, const input[], any:...)
  661. {
  662. new count = 1, players[32]
  663. static msg[191]
  664. vformat(msg, 190, input, 3)
  665.  
  666. replace_all(msg, 190, "!g", "^4")
  667. replace_all(msg, 190, "!y", "^1")
  668. replace_all(msg, 190, "!t", "^3")
  669. replace_all(msg, 190, "á", "á")
  670. replace_all(msg, 190, "é", "Ă©")
  671. replace_all(msg, 190, "í", "Ă­")
  672. replace_all(msg, 190, "ó", "Ăł")
  673. replace_all(msg, 190, "ö", "ö")
  674. replace_all(msg, 190, "ő", "Ĺ‘")
  675. replace_all(msg, 190, "ú", "Ăş")
  676. replace_all(msg, 190, "ü", "ĂĽ")
  677. replace_all(msg, 190, "ű", "ű")
  678. replace_all(msg, 190, "Á", "Á")
  679. replace_all(msg, 190, "É", "É")
  680. replace_all(msg, 190, "Í", "ĂŤ")
  681. replace_all(msg, 190, "Ó", "Ă“")
  682. replace_all(msg, 190, "Ö", "Ă–")
  683. replace_all(msg, 190, "Ő", "Ő")
  684. replace_all(msg, 190, "Ú", "Ăš")
  685. replace_all(msg, 190, "Ü", "Ăś")
  686. replace_all(msg, 190, "Ű", "Ĺ°")
  687.  
  688. if (id) players[0] = id; else get_players(players, count, "ch")
  689. {
  690. for (new i = 0; i < count; i++)
  691. {
  692. if (is_user_connected(players[i]))
  693. {
  694. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  695. write_byte(players[i])
  696. write_string(msg)
  697. message_end()
  698. }
  699. }
  700. }
  701. return PLUGIN_HANDLED
  702. }


Előre is köszi.

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: zp_bank
HozzászólásElküldve: 2014.02.12. 15:30 
Offline
Tag

Csatlakozott: 2013.10.26. 21:32
Hozzászólások: 56
Megköszönték neki: 5 alkalommal
Tessék
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <nvault>
  4. #include <zombieplague>
  5.  
  6. #define CMDTARGET_OBEY_IMMUNITY (1<<0)
  7. #define CMDTARGET_ALLOW_SELF (1<<1)
  8. #define CMDTARGET_ONLY_ALIVE (1<<2)
  9. #define CMDTARGET_NO_BOTS (1<<3)
  10.  
  11. enum pcvar
  12. {
  13. enable = 0,
  14. cap,
  15. start,
  16. advertise,
  17. deposit,
  18. withdraw,
  19. account,
  20. savetype,
  21. bot
  22. }
  23.  
  24. new gvault, g_msgSayText, pcvars[pcvar], bankstorage[33]
  25.  
  26. public plugin_init()
  27. {
  28. register_plugin("[ZP] Sub Plugin: Ultimate Bank", "1.1", "93()|29!/<, Random1");
  29. register_dictionary("zp_bank.txt")
  30.  
  31. gvault = nvault_open("Zombie Bank Ultimate");
  32. g_msgSayText = get_user_msgid("SayText")
  33.  
  34. pcvars[enable] = register_cvar("zp_bank", "1");
  35. pcvars[cap] = register_cvar("zp_bank_limit", "757");
  36. pcvars[start] = register_cvar("zp_bank_blockstart", "0");
  37. pcvars[advertise] = register_cvar("zp_bank_ad_delay", "275.7")
  38. pcvars[deposit] = register_cvar("zp_bank_deposit", "1")
  39. pcvars[withdraw] = register_cvar("zp_bank_withdraw", "1")
  40. pcvars[account] = register_cvar("zp_bank_account", "1")
  41. pcvars[savetype] = register_cvar("zp_bank_save_type", "1")
  42. pcvars[bot] = register_cvar("zp_bank_bot_support", "1")
  43.  
  44. if (get_pcvar_num(pcvars[cap]) > 2147483646)
  45. {
  46. set_pcvar_num(pcvars[cap], 2147483646);
  47. server_print("[%L] %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_LIMIT");
  48. }
  49. else if (get_pcvar_num(pcvars[cap]) < 1)
  50. set_pcvar_num(pcvars[cap], 1);
  51.  
  52. register_clcmd("say", "handle_say");
  53. register_clcmd("say_team", "handle_say");
  54.  
  55. if (get_pcvar_num(pcvars[advertise]))
  56. set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
  57. }
  58.  
  59. public plugin_cfg()
  60. {
  61. // Plugin is disabled
  62. if (!get_pcvar_num(pcvars[enable]))
  63. return;
  64.  
  65. // Get configs dir
  66. new cfgdir[32]
  67. get_configsdir(cfgdir, charsmax(cfgdir))
  68.  
  69. // Execute config file (zp_rewards.cfg)
  70. server_cmd("exec %s/zp_bank.cfg", cfgdir)
  71. }
  72.  
  73. public advertise_loop()
  74. {
  75. if (!get_pcvar_num(pcvars[enable]) || !get_pcvar_float(pcvars[advertise]))
  76. {
  77. remove_task()
  78.  
  79. return;
  80. }
  81.  
  82. if (get_pcvar_num(pcvars[cap]))
  83. zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO1", get_pcvar_num(pcvars[cap]));
  84.  
  85. if (get_pcvar_num(pcvars[deposit]))
  86. zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_DPS");
  87. else
  88. zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_AS");
  89.  
  90. if (get_pcvar_num(pcvars[withdraw]))
  91. zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_WD");
  92.  
  93. set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
  94. }
  95.  
  96. public plugin_end()
  97. nvault_close(gvault);
  98.  
  99. public handle_say(id)
  100. {
  101. if (!get_pcvar_num(pcvars[enable]))
  102. return PLUGIN_CONTINUE;
  103.  
  104. new text[70], arg1[32], arg2[32], arg3[6];
  105. read_args(text, sizeof(text) - 1);
  106. remove_quotes(text);
  107. arg1[0] = '^0';
  108. arg2[0] = '^0';
  109. arg3[0] = '^0';
  110. parse(text, arg1, sizeof(arg1) - 1, arg2, sizeof(arg2) - 1, arg3, sizeof(arg3) - 1);
  111.  
  112. //strip forward slash if present
  113. if (equali(arg1, "/", 1))
  114. format(arg1, 31, arg1[1]);
  115.  
  116. // if the chat line has more than 2 words, we're not interested at all
  117. if (arg3[0])
  118. return PLUGIN_CONTINUE;
  119.  
  120. if (equali(arg1, "deposit", 7) || equali(arg1, "save", 4) || equali(arg1, "store", 5))
  121. {
  122. if (!get_pcvar_num(pcvars[deposit]))
  123. {
  124. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DNA");
  125.  
  126. return PLUGIN_CONTINUE;
  127. }
  128.  
  129. if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
  130. {
  131. new amount = str_to_num(arg2);
  132. if (amount <= 0)
  133. {
  134. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
  135.  
  136. return PLUGIN_CONTINUE;
  137. }
  138. store_packs(id, amount);
  139.  
  140. return PLUGIN_HANDLED;
  141. }
  142. else if (equali(arg2, "all"))
  143. {
  144. store_packs(id, 0);
  145.  
  146. return PLUGIN_HANDLED;
  147. }
  148. else if (!arg2[0])
  149. {
  150. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_DPS");
  151.  
  152. return PLUGIN_CONTINUE;
  153. }
  154.  
  155. return PLUGIN_CONTINUE;
  156. }
  157. else if (equali(arg1, "withdraw", 8) || equali(arg1, "take", 4) || equali(arg1, "retrieve", 8))
  158. {
  159. if (!get_pcvar_num(pcvars[withdraw]))
  160. {
  161. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WNA");
  162.  
  163. return PLUGIN_CONTINUE;
  164. }
  165.  
  166. if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
  167. {
  168. new amount = str_to_num(arg2);
  169. if (amount <= 0)
  170. {
  171. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
  172.  
  173. return PLUGIN_CONTINUE;
  174. }
  175. take_packs(id, amount);
  176.  
  177. return PLUGIN_HANDLED;
  178. }
  179. else if (equali(arg2, "all", 3) || equali(arg2, "everything", 10))
  180. {
  181. take_packs(id, 0);
  182.  
  183. return PLUGIN_HANDLED;
  184. }
  185. else if (!arg2[0])
  186. {
  187. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_WD");
  188.  
  189. return PLUGIN_CONTINUE;
  190. }
  191.  
  192. return PLUGIN_CONTINUE;
  193. }
  194. else if (equali(arg1, "packs", 6) || equali(arg1, "account", 7) || equali(arg1, "bank", 4))
  195. {
  196. if (!arg2[0])
  197. {
  198. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_INFO_CHK1", bankstorage[id]);
  199.  
  200. return PLUGIN_HANDLED;
  201. }
  202. else
  203. {
  204. new id2 = cmd_target(id, arg2, 2);
  205. if (!id2)
  206. return PLUGIN_CONTINUE;
  207.  
  208. static id2name[32];
  209. get_user_name(id2, id2name, 31);
  210. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_INFO_CHK2", id2name, bankstorage[id2]);
  211.  
  212. return PLUGIN_HANDLED;
  213. }
  214.  
  215. return PLUGIN_CONTINUE;
  216. }
  217.  
  218. return PLUGIN_CONTINUE;
  219. }
  220.  
  221. //public zp_user_disconnect_pre(id)
  222. public client_disconnect(id)
  223. {
  224. if (!get_pcvar_num(pcvars[enable]))
  225. return;
  226.  
  227. if (is_user_bot(id) && !get_pcvar_num(pcvars[bot]) || !zp_get_user_ammo_packs(id))
  228. return;
  229. else
  230. store_packs(id, 0);
  231.  
  232. if (bankstorage[id] > 0)
  233. save_data(id);
  234. }
  235.  
  236. //public zp_user_connect_post(id)
  237. public client_putinserver(id)
  238. {
  239. if (!get_pcvar_num(pcvars[enable]))
  240. return;
  241.  
  242. bankstorage[id] = 0; //clear residual before loading
  243. retrieve_data(id);
  244. if (!get_pcvar_num(pcvars[withdraw]))
  245. {
  246. if (!bankstorage[id] || is_user_bot(id) && !get_pcvar_num(pcvars[bot]))
  247. return;
  248.  
  249. take_packs(id, 0)
  250. }
  251. }
  252.  
  253. store_packs(id, amnt)
  254. {
  255. if (!get_pcvar_num(pcvars[enable]))
  256. return;
  257.  
  258. new temp = zp_get_user_ammo_packs(id);
  259. new limit = get_pcvar_num(pcvars[cap]);
  260. new fill = limit - bankstorage[id];
  261.  
  262. if (!temp)
  263. {
  264. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NAPTD")
  265.  
  266. return;
  267. }
  268.  
  269. if (amnt == 0)
  270. {
  271. if (bankstorage[id] + temp <= limit)
  272. {
  273. bankstorage[id] += temp;
  274. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DPST", temp)
  275. zp_set_user_ammo_packs(id, 0);
  276. }
  277. else
  278. {
  279. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
  280. if (!fill)
  281. {
  282. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
  283.  
  284. return;
  285. }
  286. else
  287. {
  288. bankstorage[id] += fill
  289. zp_set_user_ammo_packs(id, temp - fill);
  290. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PADPST", fill);
  291. }
  292. }
  293. checkmax(id);
  294. }
  295. else if (amnt > 0)
  296. {
  297. if (temp >= amnt)
  298. {
  299. if (bankstorage[id] + amnt <= limit)
  300. {
  301. bankstorage[id] += amnt
  302. zp_set_user_ammo_packs(id, temp - amnt);
  303. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DPST", amnt)
  304. }
  305. else
  306. {
  307. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
  308. if (!fill)
  309. {
  310. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
  311.  
  312. return;
  313. }
  314. else
  315. {
  316. bankstorage[id] += fill
  317. zp_set_user_ammo_packs(id, temp - fill);
  318. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PDPST", fill, amnt);
  319. }
  320. }
  321. }
  322. else
  323. {
  324. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASTDG", amnt, temp);
  325.  
  326. return;
  327. }
  328. }
  329. }
  330.  
  331. take_packs(id, amnt)
  332. {
  333. if (!get_pcvar_num(pcvars[enable]))
  334. return;
  335.  
  336. if (!bankstorage[id])
  337. {
  338. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NPIA")
  339.  
  340. return;
  341. }
  342.  
  343. if (amnt == 0)
  344. {
  345. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + bankstorage[id])
  346. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WALL", bankstorage[id])
  347. bankstorage[id] = 0;
  348. }
  349. else if (amnt > 0)
  350. {
  351. if (bankstorage[id] >= amnt)
  352. {
  353. zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amnt);
  354. bankstorage[id] -= amnt;
  355. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WAM", amnt)
  356. }
  357. else
  358. {
  359. zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASGB", amnt, bankstorage[id]);
  360.  
  361. return;
  362. }
  363. }
  364. }
  365.  
  366. save_data(id)
  367. {
  368. new vaultkey[40], vaultdata[13];
  369.  
  370. switch (get_pcvar_num(pcvars[savetype]))
  371. {
  372. case 1:
  373. {
  374. new AuthID[33];
  375. get_user_authid(id, AuthID, 32);
  376.  
  377. formatex(vaultkey, 39, "__%s__", AuthID);
  378. }
  379. case 2:
  380. {
  381. new IP[33];
  382. get_user_ip(id, IP, 32);
  383.  
  384. formatex(vaultkey, 39, "__%s__", IP);
  385. }
  386. case 3:
  387. {
  388. new Name[33];
  389. get_user_name(id, Name, 32);
  390.  
  391. formatex(vaultkey, 39, "__%s__", Name);
  392. }
  393. }
  394. formatex(vaultdata, 12, "%i", bankstorage[id]);
  395. nvault_set(gvault, vaultkey, vaultdata);
  396. }
  397.  
  398. retrieve_data(id)
  399. {
  400. new vaultkey[40], vaultdata[13];
  401.  
  402. switch (get_pcvar_num(pcvars[savetype]))
  403. {
  404. case 1:
  405. {
  406. new AuthID[33];
  407. get_user_authid(id, AuthID, 32);
  408.  
  409. formatex(vaultkey, 39, "__%s__", AuthID);
  410. }
  411. case 2:
  412. {
  413. new IP[33];
  414. get_user_ip(id, IP, 32);
  415.  
  416. formatex(vaultkey, 39, "__%s__", IP);
  417. }
  418. case 3:
  419. {
  420. new Name[33];
  421. get_user_name(id, Name, 32);
  422.  
  423. formatex(vaultkey, 39, "__%s__", Name);
  424. }
  425. }
  426. nvault_get(gvault, vaultkey, vaultdata, 12);
  427.  
  428. bankstorage[id] = str_to_num(vaultdata);
  429. checkmax(id);
  430.  
  431. // If they have an account don't allow zombie mod to give them 5 ammo packs at beggining
  432. if (get_pcvar_num(pcvars[start]) && bankstorage[id] > 0)
  433. zp_set_user_ammo_packs(id, 0);
  434. }
  435.  
  436. checkmax(id)
  437. {
  438. if (bankstorage[id] > get_pcvar_num(pcvars[cap]))
  439. bankstorage[id] = get_pcvar_num(pcvars[cap]);
  440. else if (bankstorage[id] < 0)
  441. bankstorage[id] = 0;
  442. }
  443.  
  444. // Colored chat print by MeRcyLeZZ
  445. zp_colored_print(target, const message[], any:...)
  446. {
  447. static buffer[512], i, argscount
  448. argscount = numargs()
  449.  
  450. // Send to everyone
  451. if (!target)
  452. {
  453. static player
  454. for (player = 1; player <= get_maxplayers(); player++)
  455. {
  456. // Not connected
  457. if (!is_user_connected(player))
  458. continue;
  459.  
  460. // Remember changed arguments
  461. static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
  462. changedcount = 0
  463.  
  464. // Replace LANG_PLAYER with player id
  465. for (i = 2; i < argscount; i++)
  466. {
  467. if (getarg(i) == LANG_PLAYER)
  468. {
  469. setarg(i, 0, player)
  470. changed[changedcount] = i
  471. changedcount++
  472. }
  473. }
  474.  
  475. // Format message for player
  476. vformat(buffer, charsmax(buffer), message, 3)
  477.  
  478. // Send it
  479. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
  480. write_byte(player)
  481. write_string(buffer)
  482. message_end()
  483.  
  484. // Replace back player id's with LANG_PLAYER
  485. for (i = 0; i < changedcount; i++)
  486. setarg(changed[i], 0, LANG_PLAYER)
  487. }
  488. }
  489. // Send to specific target
  490. else
  491. {
  492. // Format message for player
  493. vformat(buffer, charsmax(buffer), message, 3)
  494.  
  495. // Send it
  496. message_begin(MSG_ONE, g_msgSayText, _, target)
  497. write_byte(target)
  498. write_string(buffer)
  499. message_end()
  500. }
  501. }
  502.  
  503. // Stock from AmxMisc
  504. stock get_configsdir(name[], len)
  505. return get_localinfo("amxx_configsdir", name, len);
  506.  
  507. stock cmd_target(id,const arg[],flags = CMDTARGET_OBEY_IMMUNITY)
  508. {
  509. new player = find_player("bl",arg);
  510. if (player)
  511. {
  512. if ( player != find_player("blj",arg) )
  513. {
  514. #if defined AMXMOD_BCOMPAT
  515. console_print(id, SIMPLE_T("There are more clients matching to your argument"));
  516. #else
  517. console_print(id,"%L",id,"MORE_CL_MATCHT");
  518. #endif
  519. return 0;
  520. }
  521. }
  522. else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] )
  523. {
  524. player = find_player("k",str_to_num(arg[1]));
  525. }
  526. if (!player)
  527. {
  528. #if defined AMXMOD_BCOMPAT
  529. console_print(id, SIMPLE_T("Client with that name or userid not found"));
  530. #else
  531. console_print(id,"%L",id,"CL_NOT_FOUND");
  532. #endif
  533. return 0;
  534. }
  535. if (flags & CMDTARGET_OBEY_IMMUNITY)
  536. {
  537. if ((get_user_flags(player) & ADMIN_IMMUNITY) &&
  538. ((flags & CMDTARGET_ALLOW_SELF) ? (id != player) : true) )
  539. {
  540. new imname[32];
  541. get_user_name(player,imname,31);
  542. #if defined AMXMOD_BCOMPAT
  543. console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname);
  544. #else
  545. console_print(id,"%L",id,"CLIENT_IMM",imname);
  546. #endif
  547. return 0;
  548. }
  549. }
  550. if (flags & CMDTARGET_ONLY_ALIVE)
  551. {
  552. if (!is_user_alive(player))
  553. {
  554. new imname[32];
  555. get_user_name(player,imname,31);
  556. #if defined AMXMOD_BCOMPAT
  557. console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname);
  558. #else
  559. console_print(id,"%L",id,"CANT_PERF_DEAD",imname);
  560. #endif
  561. return 0;
  562. }
  563. }
  564. if (flags & CMDTARGET_NO_BOTS)
  565. {
  566. if (is_user_bot(player))
  567. {
  568. new imname[32];
  569. get_user_name(player,imname,31);
  570. #if defined AMXMOD_BCOMPAT
  571. console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname);
  572. #else
  573. console_print(id,"%L",id,"CANT_PERF_BOT",imname);
  574. #endif
  575. return 0;
  576. }
  577. }
  578. return player;
  579. }


A hozzászólást 1 alkalommal szerkesztették, utoljára BeepBeep 2014.02.12. 16:28-kor.
SMA BB-code!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: zp_bank
HozzászólásElküldve: 2014.02.12. 19:35 
Offline
Őskövület
Avatar

Csatlakozott: 2011.12.28. 00:35
Hozzászólások: 2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Nem másik bankot kértem, hanem hogy valaki ki tudná-e javítani..

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: zp_bank
HozzászólásElküldve: 2014.02.12. 19:38 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.09.23. 20:29
Hozzászólások: 325
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 87 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <sqlx>
  5. #include <zombieplague>
  6.  
  7. #if !defined MAX_PLAYERS
  8. #define MAX_PLAYERS 32
  9. #endif
  10.  
  11. new PLUGIN_NAME[] = "[ZP]Addons: Bank SQL";
  12. new PLUGIN_VERSION[] = "0.9.2";
  13. new PLUGIN_AUTHOR[] = "Epmak";
  14.  
  15.  
  16. enum vars_struct {
  17. mode=0,
  18. annonce,
  19.  
  20. save_limit,
  21. save_days,
  22. save_type,
  23.  
  24. block_cname,
  25. startedammo,
  26. allow_passwd,
  27. allow_donate,
  28.  
  29. bool:round_end,
  30.  
  31. _pw_str[32],
  32. table[32],
  33. config_dir[128]
  34. };
  35.  
  36. enum bank_struct {
  37. bool:ingame,
  38. bool:async,
  39. bool:loggin,
  40. auth[36],
  41. passwd[32],
  42. amount
  43. }
  44.  
  45. new g_vars[vars_struct];
  46. new g_Bank[MAX_PLAYERS+1][bank_struct];
  47. new Handle:g_Sql = Empty_Handle,Handle:g_SqlTuple = Empty_Handle;
  48.  
  49. public plugin_init()
  50. {
  51. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  52. register_cvar("zp_bank_sql", PLUGIN_VERSION, FCVAR_SERVER);
  53.  
  54. register_dictionary("zp_bank.txt");
  55. register_dictionary("common.txt");
  56.  
  57. register_clcmd("say", "handle_say");
  58. register_clcmd("say_team", "handle_say");
  59.  
  60. register_concmd("zp_bank_show", "cmdBankShow", ADMIN_ADMIN);
  61. register_concmd("zp_bank_set", "cmdBankSet", ADMIN_RCON, "<name or #userid> <+ or ->amount");
  62.  
  63. g_vars[startedammo] = get_cvar_pointer("zp_starting_ammo_packs");
  64.  
  65. register_srvcmd("zp_bank_connect", "db_connect");
  66.  
  67. register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");
  68.  
  69. server_cmd("zp_bank_connect");
  70. }
  71.  
  72. public plugin_precache()
  73. {
  74. get_configsdir(g_vars[config_dir], 127);
  75.  
  76. g_vars[mode] = register_cvar("zp_bank", "1");
  77. g_vars[annonce] = register_cvar("zp_bank_annonce", "360.0");
  78. g_vars[save_limit] = register_cvar("zp_bank_save_limit", "1000");
  79. g_vars[save_days] = register_cvar("zp_bank_save_days", "24");
  80. g_vars[save_type] = register_cvar("zp_bank_save_type", "2");
  81. g_vars[block_cname] = register_cvar("zp_bank_block_name_change", "1");
  82. g_vars[allow_passwd] = register_cvar("zp_bank_allow_passwd", "1");
  83. g_vars[allow_donate] = register_cvar("zp_bank_allow_donate", "1");
  84.  
  85. register_cvar("zp_bank_host", "127.0.0.1");
  86. register_cvar("zp_bank_user", "root");
  87. register_cvar("zp_bank_pass", "");
  88. register_cvar("zp_bank_db", "amxx");
  89. register_cvar("zp_bank_type", "mysql");
  90. register_cvar("zp_bank_table", "zp_bank");
  91. register_cvar("zp_bank_pw_str", "_bpw");
  92.  
  93. server_cmd("exec %s/zp_bank.cfg", g_vars[config_dir]);
  94. server_exec();
  95. }
  96.  
  97. public plugin_cfg()
  98. {
  99. g_vars[mode] = get_pcvar_num(g_vars[mode]);
  100. g_vars[save_limit] = get_pcvar_num(g_vars[save_limit]);
  101. g_vars[save_days] = get_pcvar_num(g_vars[save_days]);
  102. g_vars[save_type] = get_pcvar_num(g_vars[save_type]);
  103. g_vars[block_cname] = get_pcvar_num(g_vars[block_cname]);
  104. g_vars[allow_passwd] = get_pcvar_num(g_vars[allow_passwd]);
  105. g_vars[allow_donate] = get_pcvar_num(g_vars[allow_donate]);
  106.  
  107. if(g_vars[save_limit] < 0) g_vars[save_limit] = 0;
  108.  
  109. if(get_pcvar_num(g_vars[annonce]))
  110. set_task(get_pcvar_float(g_vars[annonce]), "print_annonce",_,_,_,"b");
  111.  
  112. get_cvar_string("zp_bank_pw_str", g_vars[_pw_str], 31);
  113. }
  114.  
  115. public plugin_end()
  116. {
  117. if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);
  118. if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple);
  119. }
  120.  
  121. public zp_round_started(gamemode, id)
  122. {
  123. g_vars[round_end] = false;
  124. }
  125.  
  126. public zp_round_ended(winteam)
  127. {
  128. if (!g_vars[mode] || g_Sql == Empty_Handle)
  129. return ;
  130.  
  131. static i;
  132. for(i=1;i<=MAX_PLAYERS;i++)
  133. {
  134. if(!g_Bank[i][ingame] || !g_Bank[i][loggin] || !g_Bank[i][async])
  135. continue;
  136.  
  137. SaveClientBank(i);
  138. }
  139.  
  140. g_vars[round_end] = true;
  141. }
  142.  
  143. public client_connect(id)
  144. {
  145. if (!g_vars[mode])
  146. return ;
  147.  
  148. GetAuthId(id, g_Bank[id][auth],35);
  149.  
  150. g_Bank[id][amount] = 0;
  151. g_Bank[id][async] = false;
  152. g_Bank[id][loggin] = false;
  153.  
  154. if(g_vars[mode] == 2)
  155. zp_set_user_ammo_packs(id, get_pcvar_num(g_vars[startedammo]));
  156.  
  157. LoadClientBank(id);
  158. }
  159.  
  160. public client_putinserver(id)
  161. {
  162. g_Bank[id][ingame] = true;
  163.  
  164. if(g_Bank[id][async] == true && g_Bank[id][loggin] == true)
  165. SetAmmoBank(id, g_Bank[id][amount]);
  166. }
  167.  
  168. public client_disconnect(id)
  169. {
  170. if (!g_vars[mode] || g_Sql == Empty_Handle)
  171. return ;
  172.  
  173. if(g_vars[round_end] == false && g_Bank[id][async] == true && g_Bank[id][loggin] == true)
  174. SaveClientBank(id);
  175.  
  176. g_Bank[id][ingame] = false;
  177. g_Bank[id][auth][0] = '^0';
  178. g_Bank[id][passwd][0] = '^0';
  179. }
  180.  
  181. public cmdBankShow(id, level, cid)
  182. {
  183. if (!cmd_access(id, level, cid, 1))
  184. return PLUGIN_HANDLED;
  185.  
  186. static pl_name[32], pl_amount[11], i;
  187. console_print(id, "%33s amount","name");
  188. for(i=1;i<=MAX_PLAYERS;i++)
  189. {
  190. if(!g_Bank[i][ingame]) continue;
  191.  
  192. get_user_name(i,pl_name,31);
  193.  
  194. if(!g_Bank[i][async])
  195. pl_amount = "not loaded";
  196. else if(!g_Bank[i][loggin])
  197. pl_amount = "not loggin";
  198. else
  199. num_to_str(GetAmmoBank(i),pl_amount,10);
  200.  
  201. console_print(id, "%33s %s", pl_name, pl_amount);
  202. }
  203.  
  204. return PLUGIN_HANDLED;
  205. }
  206.  
  207. public cmdBankSet(id, level, cid)
  208. {
  209. if (!cmd_access(id, level, cid, 3))
  210. return PLUGIN_HANDLED;
  211.  
  212. static s_player[32], player, s_amount[12], i_amount;
  213. read_argv(1, s_player, 31);
  214. player = cmd_target(id, s_player, CMDTARGET_ALLOW_SELF);
  215.  
  216. if (!player)
  217. return PLUGIN_HANDLED;
  218.  
  219. get_user_name(player,s_player,31);
  220. if(!g_Bank[player][async])
  221. {
  222. console_print(id,"The player '%s' has not loaded bank", s_player);
  223. return PLUGIN_HANDLED;
  224. }
  225. else if(!g_Bank[player][loggin])
  226. {
  227. console_print(id,"The player '%s' has not loggin bank", s_player);
  228. return PLUGIN_HANDLED;
  229. }
  230.  
  231. read_argv(2, s_amount, 11);
  232. remove_quotes(s_amount);
  233. i_amount = str_to_num(s_amount);
  234.  
  235. switch(s_amount[0])
  236. {
  237. case '+':
  238. SetAmmoBank(player, GetAmmoBank(player)+i_amount);
  239. case '-':
  240. SetAmmoBank(player, GetAmmoBank(player)-(0-i_amount));
  241. default:
  242. SetAmmoBank(player,i_amount);
  243. }
  244.  
  245. return PLUGIN_HANDLED;
  246. }
  247.  
  248. public print_annonce()
  249. {
  250. if (!g_vars[mode] || g_Sql == Empty_Handle)
  251. return ;
  252.  
  253. print_color(0, "!g[Resident Evil]!t A szerver lőszercsomag bankot használ!");
  254. if(g_vars[mode] == 1)
  255. {
  256. print_color(0, "!g[Resident Evil]!y A berakáshoz használd a!t /deposit <ertek>!y parancsot.");
  257. print_color(0, "!g[Resident Evil]!y A kiszedéshez használd a!t /withdraw <ertek>!y parancsot.");
  258. }
  259. else
  260. {
  261. print_color(0, "!g[Resident Evil]!t A szerver automatikus menti a loszercsomagodat!");
  262. }
  263. }
  264.  
  265. public db_loadcurrent()
  266. {
  267. for(new i=1;i<=MAX_PLAYERS;i++)
  268. {
  269. if(g_Bank[i][async] || !g_Bank[i][ingame]) continue;
  270.  
  271. LoadClientBank(i);
  272. }
  273. }
  274.  
  275. public db_connect(count)
  276. {
  277. if(!g_vars[mode])
  278. return ;
  279.  
  280. new host[64], user[32], pass[32], db[128];
  281. new get_type[13], set_type[12];
  282. new error[128], errno;
  283.  
  284. get_cvar_string("zp_bank_host", host, 63);
  285. get_cvar_string("zp_bank_user", user, 31);
  286. get_cvar_string("zp_bank_pass", pass, 31);
  287. get_cvar_string("zp_bank_type", set_type, 11);
  288. get_cvar_string("zp_bank_db", db, 127);
  289. get_cvar_string("zp_bank_table", g_vars[table], 31);
  290.  
  291. if(is_module_loaded(set_type) == -1)
  292. {
  293. server_print("^r^n%s error: module '%s' not loaded.^r^n%s Add line %s to %s/modules.ini and restart server^r^n", set_type, set_type, g_vars[config_dir]);
  294. return ;
  295. }
  296.  
  297. SQL_GetAffinity(get_type, 12);
  298.  
  299. if (!equali(get_type, set_type))
  300. if (!SQL_SetAffinity(set_type))
  301. log_amx("Failed to set affinity from %s to %s.", get_type, set_type);
  302.  
  303. g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db);
  304.  
  305. g_Sql = SQL_Connect(g_SqlTuple, errno, error, 127);
  306.  
  307. if (g_Sql == Empty_Handle)
  308. {
  309. server_print("%s SQL Error #%d - %s", errno, error);
  310.  
  311. count += 1;
  312. set_task(10.0, "db_connect", count);
  313.  
  314. return ;
  315. }
  316.  
  317. SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8");
  318.  
  319. if (equali(set_type, "sqlite") && !sqlite_TableExists(g_Sql, g_vars[table])) SQL_QueryAndIgnore(g_Sql, "CREATE TABLE %s (auth VARCHAR(36) PRIMARY KEY, password VARCHAR(32) NOT NULL DEFAULT '', amount INTEGER DEFAULT 0, timestamp INTEGER NOT NULL DEFAULT 0)",g_vars[table]);
  320. else if (equali(set_type, "mysql")) SQL_QueryAndIgnore(g_Sql,"CREATE TABLE IF NOT EXISTS `%s` (`auth` VARCHAR(36) NOT NULL, `password` VARCHAR(32) NOT NULL DEFAULT '', `amount` INT(10) NOT NULL DEFAULT 0, `timestamp` INT(10) NOT NULL DEFAULT 0, PRIMARY KEY (`auth`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", g_vars[table]);
  321.  
  322. CleanDataBase();
  323. if(count > 1)
  324. db_loadcurrent();
  325.  
  326. server_print("%s connected to: '%s://%s:****@%s/%s/%s'",set_type, user, host, db, g_vars[table]);
  327. }
  328.  
  329. public CleanDataBase()
  330. {
  331. SQL_QueryAndIgnore(g_Sql, "DELETE FROM %s WHERE amount='0' AND password = '';", g_vars[table]);
  332.  
  333. if (!g_vars[save_days]) return ;
  334.  
  335. new curTime = get_systime();
  336. curTime -= ((g_vars[save_days] * 24) * 3600);
  337.  
  338. SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_vars[table], curTime);
  339. }
  340.  
  341. public fwClientUserInfoChanged(id, buffer)
  342. {
  343. if (!g_vars[mode] || !is_user_connected(id))
  344. return FMRES_IGNORED;
  345.  
  346. new name[32], val[32], name_1[] = "name";
  347. get_user_name(id, name, 31);
  348. engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31);
  349. if (equal(val, name))
  350. return FMRES_IGNORED;
  351.  
  352. if(g_vars[block_cname])
  353. {
  354. engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name);
  355. client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);
  356. console_print(id, "%L", id ,"NO_NAME_CHANGE");
  357. }
  358. else
  359. {
  360. GetAuthId(id,g_Bank[id][auth],35);
  361. return FMRES_IGNORED;
  362. }
  363.  
  364. return FMRES_SUPERCEDE;
  365. }
  366.  
  367. public handle_say(id)
  368. {
  369. if(!g_vars[mode])
  370. {
  371. print_color(id, "!g[Resident Evil]!t A bank le van tiltva.");
  372.  
  373. return PLUGIN_CONTINUE;
  374. }
  375. else if(g_Sql == Empty_Handle)
  376. {
  377. print_color(id, "!g[Resident Evil]!t A bank ideiglenesen nem elérhető!");
  378.  
  379. return PLUGIN_CONTINUE;
  380. }
  381. else if (!g_Bank[id][async])
  382. return PLUGIN_CONTINUE;
  383.  
  384. new text[60], command[16], command2[32], password[32], set_packs;
  385. read_args(text, 59);
  386. remove_quotes(text);
  387.  
  388. command[0] = '^0';
  389. command2[0] = '^0';
  390. password[0] = '^0';
  391. parse(text, command, 15, command2, 31, password, 31);
  392.  
  393. if (equali(command, "/", 1))
  394. format(command, 15, command[1]);
  395.  
  396. if (g_vars[allow_donate] && equali(command, "kuldes", 6))
  397. {
  398. donate(id, command2, str_to_num(password));
  399. }
  400. else if (equali(command, "mybank", 6) || equali(command, "bank", 4))
  401. {
  402. if(g_vars[save_type] == 2 && g_vars[allow_passwd])
  403. {
  404. if(equali(command2, "login", 5))
  405. {
  406. if(g_Bank[id][loggin]) {
  407. print_color(id, "!g[Resident Evil]!t Már be vagy jelentkezve.");
  408. return PLUGIN_HANDLED;
  409. }
  410.  
  411. if(g_Bank[id][passwd][0] && equal(password, g_Bank[id][passwd]))
  412. {
  413. g_Bank[id][loggin] = true;
  414. SetAmmoBank(id, g_Bank[id][amount]);
  415. client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);
  416. print_color(id, "!g[Resident Evil]!t Sikeresen beléptél.");
  417. }
  418. else
  419. {
  420. print_color(id, "!g[Resident Evil]!t Hibás jelszó!");
  421. }
  422.  
  423. return PLUGIN_HANDLED;
  424. }
  425. else if(!g_Bank[id][loggin])
  426. {
  427. print_color(id, "!g[Resident Evil]!y Belépéshez írd a chatbe!t /bank login <jelszavad>!y parancsot.");
  428. return PLUGIN_HANDLED;
  429. }
  430. else if(equali(command2, "password", 8))
  431. {
  432. if(password[0])
  433. {
  434. g_Bank[id][passwd] = password;
  435. client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);
  436. print_color(id, "!g[Resident Evil]!y Jelszó beállítva! Ne felejtsd el a jelszavad:!t %s", g_Bank[id][passwd]);
  437. }
  438. else
  439. {
  440. print_color(id, "!g[Resident Evil]!y Jelenlegi jelszó:!t %s", g_Bank[id][passwd]);
  441. }
  442. return PLUGIN_HANDLED;
  443. }
  444. else if(!g_Bank[id][passwd][0])
  445. print_color(id, "!g[Resident Evil]!y Jelszó beállításhoz írd a chatbe!t /bank password <jelszo>");
  446. }
  447.  
  448. if(g_vars[mode] == 2)
  449. {
  450. print_color(id, "!g[Resident Evil]!t A szerver automatikus menti a lőszercsomagodat!");
  451. return PLUGIN_CONTINUE;
  452. }
  453.  
  454. print_color(id, "!g[Resident Evil]!y Jelenleg!t %d!y lőszercsomagod van a bankodban.", g_Bank[id][amount]);
  455. print_color(id, "!g[Resident Evil]!y A berakáshoz használd a!t /deposit <ertek>!y parancsot.");
  456. print_color(id, "!g[Resident Evil]!y A kiszedéshez használd a!t /withdraw <ertek>!y parancsot.");
  457. }
  458. else if (g_vars[mode] == 2)
  459. return PLUGIN_CONTINUE;
  460. else if (equali(command, "deposit", 7) || equali(command, "send", 4) || equali(command, "store", 5))
  461. {
  462. new user_ammo_packs = zp_get_user_ammo_packs(id);
  463.  
  464. if (equali(command2, "all")) set_packs = user_ammo_packs;
  465. else set_packs = str_to_num(command2);
  466.  
  467. new limit_exceeded=false;
  468.  
  469. if (g_vars[save_limit] && set_packs > 0 && g_Bank[id][amount] + set_packs > g_vars[save_limit])
  470. {
  471. new overflow = g_Bank[id][amount] + set_packs - g_vars[save_limit];
  472. set_packs -= overflow;
  473.  
  474. print_color(id, "!g[Resident Evil]!y Meghaladtad a megengedhető lőszercsomagot, maximum:!t %d", g_vars[save_limit]);
  475.  
  476. limit_exceeded = true;
  477. }
  478.  
  479. if (set_packs > 0)
  480. {
  481. if (user_ammo_packs >= set_packs)
  482. {
  483. g_Bank[id][amount] += set_packs;
  484. zp_set_user_ammo_packs(id, user_ammo_packs - set_packs);
  485. print_color(id, "!g[Resident Evil]!y Beraktál!t %d!y lőszercsomagot, jelenleg a bankodban!t %d!y lőszercsomag van.", set_packs, g_Bank[id][amount]);
  486. }
  487. else
  488. print_color(id, "!g[Resident Evil]!y Ez!t (%d)!y több, mint amennyi lőszercsomagod van!t (%d)", set_packs, user_ammo_packs);
  489.  
  490. return PLUGIN_HANDLED;
  491. }
  492. else if(!limit_exceeded)
  493. print_color(id, "!g[Resident Evil]!y A berakáshoz használd a!t /deposit <ertek>!y parancsot.");
  494. }
  495. else if (equali(command, "withdraw", 8) || equali(command, "take", 4) || equali(command, "retrieve", 8) || equali(command, "wd", 2))
  496. {
  497. new user_ammo_packs = zp_get_user_ammo_packs(id);
  498.  
  499. if (equali(command2, "all")) set_packs = g_Bank[id][amount];
  500. else set_packs = str_to_num(command2);
  501.  
  502. if (set_packs > 0)
  503. {
  504. if (g_Bank[id][amount] >= set_packs)
  505. {
  506. zp_set_user_ammo_packs(id, user_ammo_packs + set_packs);
  507. g_Bank[id][amount] -= set_packs;
  508. print_color(id, "!g[Resident Evil]!y Kivettél!t %d!y lőszercsomagot, már csak!t %d!y lőszercsomagod van a bankodban.", set_packs, g_Bank[id][amount]);
  509. }
  510. else
  511. print_color(id, "!g[Resident Evil]!y Ez!t (%d)!y több, mint amennyi a bankodban van!t (%d)", set_packs, g_Bank[id][amount]);
  512.  
  513. return PLUGIN_HANDLED;
  514. }
  515. else
  516. print_color(id, "!g[Resident Evil]!y A kiszedéshez használd a!t /withdraw <ertek>!y parancsot.");
  517. }
  518.  
  519. return PLUGIN_CONTINUE;
  520. }
  521.  
  522. public donate(donater, const reciever_name[], ammo)
  523. {
  524. if(!reciever_name[0] || ammo <= 0 || zp_get_user_ammo_packs(donater) < ammo)
  525. {
  526. print_color(0, "!g[Resident Evil]!t ->>!y Lőszercsomag Küldes:!t /donate <jatekos> <ertek>.");
  527. return ;
  528. }
  529.  
  530. new reciever = cmd_target(donater, reciever_name, CMDTARGET_ALLOW_SELF);
  531. if (!reciever || reciever == donater)
  532. {
  533. print_color(0, "!g[Resident Evil]!t Nincs ilyen nevű játékos.");
  534. return ;
  535. }
  536.  
  537. zp_set_user_ammo_packs(donater, zp_get_user_ammo_packs(donater)-ammo);
  538. zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever)+ammo);
  539. }
  540.  
  541. public LoadClientBank(id)
  542. {
  543. if (g_SqlTuple == Empty_Handle || g_Sql == Empty_Handle || g_Bank[id][async] == true)
  544. return ;
  545.  
  546. new szQuery[120];
  547. format(szQuery, 119,"SELECT amount,password FROM %s WHERE auth='%s';", g_vars[table], g_Bank[id][auth]);
  548.  
  549. new szData[2];
  550. szData[0] = id;
  551. szData[1] = get_user_userid(id);
  552.  
  553. SQL_ThreadQuery(g_SqlTuple, "LoadClient_QueryHandler", szQuery, szData, 2);
  554. }
  555.  
  556. public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime)
  557. {
  558. if(iFailState != TQUERY_SUCCESS)
  559. {
  560. log_amx("%s SQL Error #%d - %s", iErrnum, szError);
  561. return ;
  562. }
  563.  
  564. new id = szData[0];
  565.  
  566. if (szData[1] != get_user_userid(id))
  567. return ;
  568.  
  569. new packs=0,info_pw[32];
  570.  
  571. if(g_vars[mode] == 2)
  572. packs = get_pcvar_num(g_vars[startedammo]);
  573.  
  574. if(SQL_NumResults(hQuery))
  575. {
  576. packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount"));
  577. SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "password"), g_Bank[id][passwd], 31);
  578. }
  579.  
  580. g_Bank[id][amount] = CheckLimit(packs);
  581. if(g_vars[allow_passwd] && g_Bank[id][passwd][0])
  582. {
  583. get_user_info(id,g_vars[_pw_str],info_pw,31);
  584. if(equal(info_pw, g_Bank[id][passwd]))
  585. {
  586. g_Bank[id][loggin] = true;
  587. }
  588. }
  589. else
  590. g_Bank[id][loggin] = true;
  591.  
  592. if(g_Bank[id][ingame] == true && g_Bank[id][loggin] == true)
  593. {
  594. SetAmmoBank(id, g_Bank[id][amount]);
  595. }
  596. g_Bank[id][async] = true;
  597. }
  598.  
  599. public SaveClientBank(id)
  600. {
  601. if (g_Sql == Empty_Handle)
  602. return ;
  603.  
  604. new packs = GetAmmoBank(id);
  605. packs = CheckLimit(packs);
  606.  
  607. SQL_QuoteString(g_Sql, g_Bank[id][passwd], 31, g_Bank[id][passwd]);
  608. SQL_QueryAndIgnore(g_Sql, "REPLACE INTO %s (auth,password,amount,timestamp) VALUES('%s', '%s', %d, %d);", g_vars[table], g_Bank[id][auth], g_Bank[id][passwd], packs, get_systime());
  609. }
  610.  
  611. stock GetAuthId(id, Buffer[]="", BufferSize=0)
  612. {
  613. switch(g_vars[save_type])
  614. {
  615. case 1: get_user_authid(id,Buffer,BufferSize);
  616. case 2:
  617. {
  618. new name[32];
  619. get_user_name(id,name,31);
  620. SQL_QuoteString(g_Sql, Buffer, BufferSize, name);
  621. }
  622. case 3: get_user_ip(id,Buffer,BufferSize,true);
  623. }
  624. }
  625.  
  626. public CheckLimit(packs)
  627. {
  628. if(g_vars[save_limit] && packs > g_vars[save_limit])
  629. {
  630. packs = g_vars[save_limit];
  631. }
  632. return packs;
  633. }
  634.  
  635. public SetAmmoBank(id, packs)
  636. {
  637. if(g_vars[mode] == 2)
  638. zp_set_user_ammo_packs(id,packs);
  639. else
  640. g_Bank[id][amount] = packs;
  641. }
  642.  
  643. public GetAmmoBank(id)
  644. {
  645. if(g_vars[mode] == 2)
  646. return zp_get_user_ammo_packs(id);
  647.  
  648. return g_Bank[id][amount];
  649. }
  650.  
  651.  
  652. stock print_color(const id, const input[], any:...)
  653. {
  654. new count = 1, players[32]
  655. static msg[191]
  656. vformat(msg, 190, input, 3)
  657.  
  658. replace_all(msg, 190, "!g", "^4")
  659. replace_all(msg, 190, "!y", "^1")
  660. replace_all(msg, 190, "!t", "^3")
  661. replace_all(msg, 190, "á", "á")
  662. replace_all(msg, 190, "é", "Ă©")
  663. replace_all(msg, 190, "í", "Ă­")
  664. replace_all(msg, 190, "ó", "Ăł")
  665. replace_all(msg, 190, "ö", "ö")
  666. replace_all(msg, 190, "ő", "Ĺ‘")
  667. replace_all(msg, 190, "ú", "Ăş")
  668. replace_all(msg, 190, "ü", "ĂĽ")
  669. replace_all(msg, 190, "ű", "ű")
  670. replace_all(msg, 190, "Á", "Á")
  671. replace_all(msg, 190, "É", "É")
  672. replace_all(msg, 190, "Í", "ĂŤ")
  673. replace_all(msg, 190, "Ó", "Ă“")
  674. replace_all(msg, 190, "Ö", "Ă–")
  675. replace_all(msg, 190, "Ő", "Ő")
  676. replace_all(msg, 190, "Ú", "Ăš")
  677. replace_all(msg, 190, "Ü", "Ăś")
  678. replace_all(msg, 190, "Ű", "Ĺ°")
  679.  
  680. if (id) players[0] = id; else get_players(players, count, "ch")
  681. {
  682. for (new i = 0; i < count; i++)
  683. {
  684. if (is_user_connected(players[i]))
  685. {
  686. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  687. write_byte(players[i])
  688. write_string(msg)
  689. message_end()
  690. }
  691. }
  692. }
  693. return PLUGIN_HANDLED
  694. }

Ők köszönték meg Vinnice nek ezt a hozzászólást: pixxa112 (2014.02.12. 20:02)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: zp_bank
HozzászólásElküldve: 2014.02.12. 20:02 
Offline
Őskövület
Avatar

Csatlakozott: 2011.12.28. 00:35
Hozzászólások: 2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Köszi :)

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 25 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole