hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.28. 01:13



Jelenlévő felhasználók

Jelenleg 523 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 522 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  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: hibás
HozzászólásElküldve: 2013.08.27. 22:26 
Offline
Beavatott

Csatlakozott: 2013.08.17. 20:12
Hozzászólások: 69
Megköszönt másnak: 44 alkalommal
Sziasztok ezt kitudná nekem vki javitani köszönöm elöre is ja és ez egy zombi bank csak 1000volt álitva a limit és átálitottam nembirom convertálni de amugy 99999 enyire kéne álitani és megprobálni convertálni köszi



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


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: hibás
HozzászólásElküldve: 2013.08.27. 23:09 
Offline
Senior Tag
Avatar

Csatlakozott: 2012.08.27. 11:11
Hozzászólások: 209
Megköszönt másnak: 35 alkalommal
Megköszönték neki: 3 alkalommal
tessék ez tökéletesen működik (zp 4.3 alatt)

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <zombieplague>
  4. #include <nvault>
  5.  
  6. #define PLUGIN "[ZP] Ammo Bank"
  7. #define VERSION "1.0"
  8. #define AUTHOR "FLiTeR"
  9.  
  10. new g_save, g_ammo[33], g_ammo_can_save[33]
  11. new cvar_save_in
  12.  
  13. #define MAX_SAVE 5000 //Ennyit ment el a bank maximum
  14.  
  15. public plugin_init()
  16. {
  17. register_plugin(PLUGIN, VERSION, AUTHOR)
  18.  
  19. register_event("DeathMsg","event_deathmsg","a")
  20. register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
  21.  
  22. cvar_save_in = register_cvar("zp_ammo_save_in", "0") // 0 = nev / 1 = ip / 2 = steam id
  23.  
  24. g_save = nvault_open("g_ammo_save")
  25. }
  26.  
  27. // LCS Mentes
  28. public zp_user_infected_post(id, infector)
  29. {
  30. if (g_ammo_can_save[infector])
  31. Save_Ammo_date(infector)
  32.  
  33. if (g_ammo_can_save[id])
  34. Save_Ammo_date(id)
  35. }
  36.  
  37. public zp_extra_item_selected(id, itemid)
  38. {
  39. if (g_ammo_can_save[id])
  40. Save_Ammo_date(id)
  41. }
  42.  
  43. public event_deathmsg()
  44. {
  45. new killer = read_data(1)
  46. new victim = read_data(2)
  47.  
  48. if (!killer && !victim)
  49. return PLUGIN_CONTINUE;
  50.  
  51. if (g_ammo_can_save[killer])
  52. Save_Ammo_date(killer)
  53.  
  54. if (g_ammo_can_save[victim])
  55. Save_Ammo_date(victim)
  56.  
  57. return PLUGIN_CONTINUE;
  58. }
  59.  
  60. public fw_PlayerPreThink(id)
  61. {
  62. if (g_ammo_can_save[id])
  63. {
  64. new ammo_packs = zp_get_user_ammo_packs(id)
  65. g_ammo[id] = ammo_packs
  66. }
  67.  
  68. return FMRES_IGNORED;
  69. }
  70.  
  71. public client_disconnect(id)
  72. {
  73. if(g_ammo_can_save[id])
  74. Save_Ammo_date(id)
  75. }
  76.  
  77. public client_putinserver(id)
  78. set_task(2.0, "now_can_save", id)
  79.  
  80. public now_can_save(id)
  81. {
  82. Load_Ammo_date(id)
  83. set_task(0.5, "can_save_true", id)
  84. }
  85.  
  86. public can_save_true(id)
  87. g_ammo_can_save[id] = true
  88.  
  89. public Save_Ammo_date(id)
  90. {
  91. new vaultkey[64], vaultdata[256]
  92.  
  93. switch (get_pcvar_num(cvar_save_in))
  94. {
  95. case 0:
  96. {
  97. new name[33];
  98. get_user_name(id,name,32)
  99.  
  100. format(vaultkey, 63, "%s-/", name)
  101. }
  102. case 1:
  103. {
  104. new player_ip[33]
  105. get_user_ip(id, player_ip, 32);
  106.  
  107. format(vaultkey, 63, "%s-/", player_ip)
  108. }
  109. case 2:
  110. {
  111. new AuthID[33];
  112. get_user_authid(id, AuthID, 32);
  113.  
  114. formatex(vaultkey, 64, "%s-/", AuthID);
  115. }
  116. }
  117.  
  118. format(vaultdata, 255, "%i#", g_ammo[id])
  119.  
  120. nvault_set(g_save, vaultkey, vaultdata)
  121. return PLUGIN_CONTINUE;
  122. }
  123.  
  124. public Load_Ammo_date(id)
  125. {
  126. new vaultkey[64], vaultdata[256]
  127.  
  128. switch (get_pcvar_num(cvar_save_in))
  129. {
  130. case 0:
  131. {
  132. new name[33];
  133. get_user_name(id,name,32)
  134.  
  135. format(vaultkey, 63, "%s-/", name)
  136. }
  137. case 1:
  138. {
  139. new player_ip[33]
  140. get_user_ip(id, player_ip, 32);
  141.  
  142. format(vaultkey, 63, "%s-/", player_ip)
  143. }
  144. case 2:
  145. {
  146. new AuthID[33];
  147. get_user_authid(id, AuthID, 32);
  148.  
  149. formatex(vaultkey, 64, "%s-/", AuthID);
  150. }
  151. }
  152.  
  153. format(vaultdata, 255, "%i#", g_ammo[id])
  154.  
  155. nvault_get(g_save, vaultkey, vaultdata, 255)
  156. replace_all(vaultdata, 255, "#", " ")
  157.  
  158. new playammo[32]
  159. parse(vaultdata, playammo, 31)
  160. g_ammo[id] = str_to_num(playammo)
  161.  
  162. set_ammo(id)
  163.  
  164. return PLUGIN_CONTINUE;
  165. }
  166.  
  167. public set_ammo(id)
  168. {
  169. if (g_ammo[id] > MAX_SAVE)
  170. {
  171. zp_set_user_ammo_packs(id, MAX_SAVE)
  172. g_ammo[id] = MAX_SAVE
  173. }
  174. else
  175. zp_set_user_ammo_packs(id, g_ammo[id])
  176. client_print(id, print_chat, "Vissza kaptad az elozo mapon ossze gyujtott Loszer Csomag-odat !", g_ammo[id])
  177. }
  178. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  179. *{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1038{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
  180. */
  181.  

Ők köszönték meg gladiator nek ezt a hozzászólást: speeddrix (2013.08.28. 09:43)
  Népszerűség: 2.27%


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  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 2 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