hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.17. 06:58



Jelenlévő felhasználók

Jelenleg 331 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 329 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], 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  [6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Küldési parancs
HozzászólásElküldve:2012.06.16. 12:45 
Offline
Őstag
Avatar

Csatlakozott:2011.11.15. 16:29
Hozzászólások:1142
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 24 alkalommal
Kód:
  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", "1000");

  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, "donate", 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. }

  653.  


Valaki megbírná csinálni , hogy a /kuldes player xy összeg parancs működjön. És ne pedig /donate - parancsal !
Köszönöm:)

_________________
[url=http://www.gametracker.com/server_info/188.227.227.114:27286/][img]http://cache.www.gametracker.com/server_info/188.227.227.114:27286/b_350_20_323957_202743_F19A15_111111.png[/img][/url]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Küldési parancs
HozzászólásElküldve:2012.06.16. 12:50 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
Kód:
  1. if (g_vars[allow_donate] && equali(command, "donate", 6))



->

Kód:
  1. if (g_vars[allow_donate] && equali(command, "kuldes", 6))

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Küldési parancs
HozzászólásElküldve:2012.06.16. 12:51 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Kód:
  1. #include <amxmodx>

  2.  

  3. #include <amxmisc>

  4.  

  5. #include <fakemeta>

  6.  

  7. #include <sqlx>

  8.  

  9. #include <zombieplague>

  10.  

  11. #include <colorchat>

  12.  

  13.  

  14.  

  15. #pragma semicolon 1

  16.  

  17.  

  18.  

  19. #if !defined MAX_PLAYERS

  20.  

  21.         #define MAX_PLAYERS 32

  22.  

  23. #endif

  24.  

  25.  

  26.  

  27. new PLUGIN_NAME[] = "[ZP]Addons: Bank SQL";

  28.  

  29. new PLUGIN_VERSION[] = "0.9.2";

  30.  

  31. new PLUGIN_AUTHOR[] = "Epmak";

  32.  

  33. new PLUGIN_PREFIX[] = "[ZP][Bank]";

  34.  

  35.  

  36.  

  37. enum vars_struct {

  38.  

  39.         mode=0,

  40.  

  41.         annonce,

  42.  

  43.        

  44.  

  45.         save_limit,

  46.  

  47.         save_days,

  48.  

  49.         save_type,

  50.  

  51.        

  52.  

  53.         block_cname,

  54.  

  55.         startedammo,

  56.  

  57.         allow_passwd,

  58.  

  59.         allow_donate,

  60.  

  61.        

  62.  

  63.         bool:round_end,

  64.  

  65.        

  66.  

  67.         _pw_str[32],

  68.  

  69.         table[32],

  70.  

  71.         config_dir[128]

  72.  

  73. };

  74.  

  75.  

  76.  

  77. enum bank_struct {

  78.  

  79.         bool:ingame,

  80.  

  81.         bool:async,

  82.  

  83.         bool:loggin,

  84.  

  85.         auth[36],

  86.  

  87.         passwd[32],

  88.  

  89.         amount

  90.  

  91. }

  92.  

  93.  

  94.  

  95. new g_vars[vars_struct];

  96.  

  97. new g_Bank[MAX_PLAYERS+1][bank_struct];

  98.  

  99. new Handle:g_Sql = Empty_Handle,Handle:g_SqlTuple = Empty_Handle;

  100.  

  101.  

  102.  

  103. public plugin_init()

  104.  

  105. {

  106.  

  107.         register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

  108.  

  109.         register_cvar("zp_bank_sql", PLUGIN_VERSION, FCVAR_SERVER);

  110.  

  111.        

  112.  

  113.         register_dictionary("zp_bank.txt");

  114.  

  115.         register_dictionary("common.txt");

  116.  

  117.        

  118.  

  119.         register_clcmd("say", "handle_say");

  120.  

  121.         register_clcmd("say_team", "handle_say");

  122.  

  123.        

  124.  

  125.         register_concmd("zp_bank_show", "cmdBankShow", ADMIN_ADMIN);

  126.  

  127.         register_concmd("zp_bank_set", "cmdBankSet", ADMIN_RCON, "<name or #userid> <+ or ->amount");

  128.  

  129.        

  130.  

  131.         g_vars[startedammo] = get_cvar_pointer("zp_starting_ammo_packs");

  132.  

  133.        

  134.  

  135.         register_srvcmd("zp_bank_connect", "db_connect");

  136.  

  137.        

  138.  

  139.         register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");

  140.  

  141.        

  142.  

  143.         server_cmd("zp_bank_connect");

  144.  

  145. }

  146.  

  147.  

  148.  

  149. public plugin_precache()

  150.  

  151. {

  152.  

  153.         get_configsdir(g_vars[config_dir], 127);

  154.  

  155.        

  156.  

  157.         g_vars[mode] = register_cvar("zp_bank", "1");

  158.  

  159.         g_vars[annonce] = register_cvar("zp_bank_annonce", "360.0");

  160.  

  161.         g_vars[save_limit] = register_cvar("zp_bank_save_limit", "1000");

  162.  

  163.         g_vars[save_days] = register_cvar("zp_bank_save_days", "24");

  164.  

  165.         g_vars[save_type] = register_cvar("zp_bank_save_type", "2");

  166.  

  167.         g_vars[block_cname] = register_cvar("zp_bank_block_name_change", "1");

  168.  

  169.         g_vars[allow_passwd] = register_cvar("zp_bank_allow_passwd", "1");

  170.  

  171.         g_vars[allow_donate] = register_cvar("zp_bank_allow_donate", "1");

  172.  

  173.        

  174.  

  175.         register_cvar("zp_bank_host", "127.0.0.1");

  176.  

  177.         register_cvar("zp_bank_user", "root");

  178.  

  179.         register_cvar("zp_bank_pass", "");

  180.  

  181.         register_cvar("zp_bank_db", "amxx");

  182.  

  183.         register_cvar("zp_bank_type", "mysql");

  184.  

  185.         register_cvar("zp_bank_table", "zp_bank");

  186.  

  187.         register_cvar("zp_bank_pw_str", "_bpw");

  188.  

  189.        

  190.  

  191.         server_cmd("exec %s/zp_bank.cfg", g_vars[config_dir]);

  192.  

  193.         server_exec();

  194.  

  195. }

  196.  

  197.  

  198.  

  199. public plugin_cfg()

  200.  

  201. {

  202.  

  203.         g_vars[mode] = get_pcvar_num(g_vars[mode]);

  204.  

  205.         g_vars[save_limit] = get_pcvar_num(g_vars[save_limit]);

  206.  

  207.         g_vars[save_days] = get_pcvar_num(g_vars[save_days]);

  208.  

  209.         g_vars[save_type] = get_pcvar_num(g_vars[save_type]);

  210.  

  211.         g_vars[block_cname] = get_pcvar_num(g_vars[block_cname]);

  212.  

  213.         g_vars[allow_passwd] = get_pcvar_num(g_vars[allow_passwd]);

  214.  

  215.         g_vars[allow_donate] = get_pcvar_num(g_vars[allow_donate]);

  216.  

  217.        

  218.  

  219.         if(g_vars[save_limit] < 0) g_vars[save_limit] = 0;

  220.  

  221.        

  222.  

  223.         if(get_pcvar_num(g_vars[annonce]))

  224.  

  225.                 set_task(get_pcvar_float(g_vars[annonce]), "print_annonce",_,_,_,"b");

  226.  

  227.        

  228.  

  229.         get_cvar_string("zp_bank_pw_str", g_vars[_pw_str], 31);

  230.  

  231. }

  232.  

  233.  

  234.  

  235. public plugin_end()

  236.  

  237. {

  238.  

  239.         if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);

  240.  

  241.         if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple);

  242.  

  243. }

  244.  

  245.  

  246.  

  247. public zp_round_started(gamemode, id)

  248.  

  249. {

  250.  

  251.         g_vars[round_end] = false;

  252.  

  253. }

  254.  

  255.  

  256.  

  257. public zp_round_ended(winteam)

  258.  

  259. {

  260.  

  261.         if (!g_vars[mode] || g_Sql == Empty_Handle)

  262.  

  263.                 return ;

  264.  

  265.        

  266.  

  267.         static i;

  268.  

  269.         for(i=1;i<=MAX_PLAYERS;i++)

  270.  

  271.         {

  272.  

  273.                 if(!g_Bank[i][ingame] || !g_Bank[i][loggin] || !g_Bank[i][async])

  274.  

  275.                         continue;

  276.  

  277.                

  278.  

  279.                 SaveClientBank(i);

  280.  

  281.         }

  282.  

  283.        

  284.  

  285.         g_vars[round_end] = true;

  286.  

  287. }

  288.  

  289.  

  290.  

  291. public client_connect(id)

  292.  

  293. {

  294.  

  295.         if (!g_vars[mode])

  296.  

  297.                 return ;

  298.  

  299.        

  300.  

  301.         GetAuthId(id, g_Bank[id][auth],35);

  302.  

  303.        

  304.  

  305.         g_Bank[id][amount] = 0;

  306.  

  307.         g_Bank[id][async] = false;

  308.  

  309.         g_Bank[id][loggin] = false;

  310.  

  311.        

  312.  

  313.         if(g_vars[mode] == 2)

  314.  

  315.                 zp_set_user_ammo_packs(id, get_pcvar_num(g_vars[startedammo]));

  316.  

  317.        

  318.  

  319.         LoadClientBank(id);

  320.  

  321. }

  322.  

  323.  

  324.  

  325. public client_putinserver(id)

  326.  

  327. {

  328.  

  329.         g_Bank[id][ingame] = true;

  330.  

  331.        

  332.  

  333.         if(g_Bank[id][async] == true && g_Bank[id][loggin] == true)

  334.  

  335.                 SetAmmoBank(id, g_Bank[id][amount]);

  336.  

  337. }

  338.  

  339.  

  340.  

  341. public client_disconnect(id)

  342.  

  343. {

  344.  

  345.         if (!g_vars[mode] || g_Sql == Empty_Handle)

  346.  

  347.                 return ;

  348.  

  349.        

  350.  

  351.         if(g_vars[round_end] == false && g_Bank[id][async] == true && g_Bank[id][loggin] == true)

  352.  

  353.                 SaveClientBank(id);

  354.  

  355.        

  356.  

  357.         g_Bank[id][ingame] = false;

  358.  

  359.         g_Bank[id][auth][0] = '^0';

  360.  

  361.         g_Bank[id][passwd][0] = '^0';

  362.  

  363. }

  364.  

  365.  

  366.  

  367. public cmdBankShow(id, level, cid)

  368.  

  369. {

  370.  

  371.         if (!cmd_access(id, level, cid, 1))

  372.  

  373.                 return PLUGIN_HANDLED;

  374.  

  375.        

  376.  

  377.         static pl_name[32], pl_amount[11], i;

  378.  

  379.         console_print(id, "%33s amount","name");

  380.  

  381.         for(i=1;i<=MAX_PLAYERS;i++)

  382.  

  383.         {

  384.  

  385.                 if(!g_Bank[i][ingame]) continue;

  386.  

  387.                

  388.  

  389.                 get_user_name(i,pl_name,31);

  390.  

  391.                

  392.  

  393.                 if(!g_Bank[i][async])

  394.  

  395.                         pl_amount = "not loaded";

  396.  

  397.                 else if(!g_Bank[i][loggin])

  398.  

  399.                         pl_amount = "not loggin";

  400.  

  401.                 else

  402.  

  403.                         num_to_str(GetAmmoBank(i),pl_amount,10);

  404.  

  405.                

  406.  

  407.                 console_print(id, "%33s %s", pl_name, pl_amount);

  408.  

  409.         }

  410.  

  411.        

  412.  

  413.         return PLUGIN_HANDLED;

  414.  

  415. }

  416.  

  417.  

  418.  

  419. public cmdBankSet(id, level, cid)

  420.  

  421. {

  422.  

  423.         if (!cmd_access(id, level, cid, 3))

  424.  

  425.                 return PLUGIN_HANDLED;

  426.  

  427.        

  428.  

  429.         static s_player[32], player, s_amount[12], i_amount;

  430.  

  431.         read_argv(1, s_player, 31);

  432.  

  433.         player = cmd_target(id, s_player, CMDTARGET_ALLOW_SELF);

  434.  

  435.        

  436.  

  437.         if (!player)

  438.  

  439.                 return PLUGIN_HANDLED;

  440.  

  441.        

  442.  

  443.         get_user_name(player,s_player,31);

  444.  

  445.         if(!g_Bank[player][async])

  446.  

  447.         {

  448.  

  449.                 console_print(id,"The player '%s' has not loaded bank", s_player);

  450.  

  451.                 return PLUGIN_HANDLED;

  452.  

  453.         }

  454.  

  455.         else if(!g_Bank[player][loggin])

  456.  

  457.         {

  458.  

  459.                 console_print(id,"The player '%s' has not loggin bank", s_player);

  460.  

  461.                 return PLUGIN_HANDLED;

  462.  

  463.         }

  464.  

  465.        

  466.  

  467.         read_argv(2, s_amount, 11);

  468.  

  469.         remove_quotes(s_amount);

  470.  

  471.         i_amount = str_to_num(s_amount);

  472.  

  473.        

  474.  

  475.         switch(s_amount[0])

  476.  

  477.         {

  478.  

  479.                 case '+':

  480.  

  481.                         SetAmmoBank(player, GetAmmoBank(player)+i_amount);

  482.  

  483.                 case '-':

  484.  

  485.                         SetAmmoBank(player, GetAmmoBank(player)-(0-i_amount));

  486.  

  487.                 default:

  488.  

  489.                         SetAmmoBank(player,i_amount);

  490.  

  491.         }

  492.  

  493.        

  494.  

  495.         return PLUGIN_HANDLED;

  496.  

  497. }

  498.  

  499.  

  500.  

  501. public print_annonce()

  502.  

  503. {

  504.  

  505.         if (!g_vars[mode] || g_Sql == Empty_Handle)

  506.  

  507.                 return ;

  508.  

  509.        

  510.  

  511.         ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE1");

  512.  

  513.         if(g_vars[mode] == 1)

  514.  

  515.         {

  516.  

  517.                 ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE2");

  518.  

  519.                 ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE3");

  520.  

  521.         }

  522.  

  523.         else

  524.  

  525.         {

  526.  

  527.                 ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4");

  528.  

  529.         }

  530.  

  531. }

  532.  

  533.  

  534.  

  535. public db_loadcurrent()

  536.  

  537. {

  538.  

  539.         for(new i=1;i<=MAX_PLAYERS;i++)

  540.  

  541.         {

  542.  

  543.                 if(g_Bank[i][async] || !g_Bank[i][ingame]) continue;

  544.  

  545.                

  546.  

  547.                 LoadClientBank(i);

  548.  

  549.         }

  550.  

  551. }

  552.  

  553.  

  554.  

  555. public db_connect(count)

  556.  

  557. {

  558.  

  559.         if(!g_vars[mode])

  560.  

  561.                 return ;

  562.  

  563.        

  564.  

  565.         new host[64], user[32], pass[32], db[128];

  566.  

  567.         new get_type[13], set_type[12];

  568.  

  569.         new error[128], errno;

  570.  

  571.        

  572.  

  573.         get_cvar_string("zp_bank_host", host, 63);

  574.  

  575.         get_cvar_string("zp_bank_user", user, 31);

  576.  

  577.         get_cvar_string("zp_bank_pass", pass, 31);

  578.  

  579.         get_cvar_string("zp_bank_type", set_type, 11);

  580.  

  581.         get_cvar_string("zp_bank_db", db, 127);

  582.  

  583.         get_cvar_string("zp_bank_table", g_vars[table], 31);

  584.  

  585.        

  586.  

  587.         if(is_module_loaded(set_type) == -1)

  588.  

  589.         {

  590.  

  591.                 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]);

  592.  

  593.                 return ;

  594.  

  595.         }

  596.  

  597.        

  598.  

  599.         SQL_GetAffinity(get_type, 12);

  600.  

  601.        

  602.  

  603.         if (!equali(get_type, set_type))

  604.  

  605.                 if (!SQL_SetAffinity(set_type))

  606.  

  607.                         log_amx("Failed to set affinity from %s to %s.", get_type, set_type);

  608.  

  609.        

  610.  

  611.         g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db);

  612.  

  613.        

  614.  

  615.         g_Sql = SQL_Connect(g_SqlTuple, errno, error, 127);

  616.  

  617.        

  618.  

  619.         if (g_Sql == Empty_Handle)

  620.  

  621.         {

  622.  

  623.                 server_print("%s SQL Error #%d - %s", PLUGIN_PREFIX, errno, error);

  624.  

  625.                

  626.  

  627.                 count += 1;

  628.  

  629.                 set_task(10.0, "db_connect", count);

  630.  

  631.                

  632.  

  633.                 return ;

  634.  

  635.         }

  636.  

  637.        

  638.  

  639.         SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8");

  640.  

  641.        

  642.  

  643.         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]);

  644.  

  645.         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]);

  646.  

  647.        

  648.  

  649.         CleanDataBase();

  650.  

  651.         if(count > 1)

  652.  

  653.                 db_loadcurrent();

  654.  

  655.        

  656.  

  657.         server_print("%s connected to: '%s://%s:****@%s/%s/%s'",PLUGIN_PREFIX, set_type, user, host, db, g_vars[table]);

  658.  

  659. }

  660.  

  661.  

  662.  

  663. public CleanDataBase()

  664.  

  665. {

  666.  

  667.         SQL_QueryAndIgnore(g_Sql, "DELETE FROM %s WHERE amount='0' AND password = '';", g_vars[table]);

  668.  

  669.        

  670.  

  671.         if (!g_vars[save_days]) return ;

  672.  

  673.        

  674.  

  675.         new curTime = get_systime();

  676.  

  677.         curTime -= ((g_vars[save_days] * 24) * 3600);

  678.  

  679.        

  680.  

  681.         SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_vars[table], curTime);

  682.  

  683. }

  684.  

  685.  

  686.  

  687. public fwClientUserInfoChanged(id, buffer)

  688.  

  689. {

  690.  

  691.         if (!g_vars[mode] || !is_user_connected(id))

  692.  

  693.                 return FMRES_IGNORED;

  694.  

  695.        

  696.  

  697.         new name[32], val[32], name_1[] = "name";

  698.  

  699.         get_user_name(id, name, 31);

  700.  

  701.         engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31);

  702.  

  703.         if (equal(val, name))

  704.  

  705.                 return FMRES_IGNORED;

  706.  

  707.        

  708.  

  709.         if(g_vars[block_cname])

  710.  

  711.         {

  712.  

  713.                 engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name);

  714.  

  715.                 client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);

  716.  

  717.                 console_print(id, "%L", id ,"NO_NAME_CHANGE");

  718.  

  719.         }

  720.  

  721.         else

  722.  

  723.         {

  724.  

  725.                 GetAuthId(id,g_Bank[id][auth],35);

  726.  

  727.                 return FMRES_IGNORED;

  728.  

  729.         }

  730.  

  731.  

  732.  

  733.         return FMRES_SUPERCEDE;

  734.  

  735. }

  736.  

  737.  

  738.  

  739. public handle_say(id)

  740.  

  741. {

  742.  

  743.         if(!g_vars[mode])

  744.  

  745.         {

  746.  

  747.                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DISABLED");

  748.  

  749.                

  750.  

  751.                 return PLUGIN_CONTINUE;

  752.  

  753.         }

  754.  

  755.         else if(g_Sql == Empty_Handle)

  756.  

  757.         {

  758.  

  759.                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ERR");

  760.  

  761.                

  762.  

  763.                 return PLUGIN_CONTINUE;

  764.  

  765.         }

  766.  

  767.         else if (!g_Bank[id][async])

  768.  

  769.                 return PLUGIN_CONTINUE;

  770.  

  771.        

  772.  

  773.         new text[60], command[16], command2[32], password[32], set_packs;

  774.  

  775.         read_args(text, 59);

  776.  

  777.         remove_quotes(text);

  778.  

  779.        

  780.  

  781.         command[0] = '^0';

  782.  

  783.         command2[0] = '^0';

  784.  

  785.         password[0] = '^0';

  786.  

  787.         parse(text, command, 15, command2, 31, password, 31);

  788.  

  789.        

  790.  

  791.         if (equali(command, "/", 1))

  792.  

  793.                 format(command, 15, command[1]);

  794.  

  795.        

  796.  

  797.         if (g_vars[allow_donate] && equali(command, "kuldes", 6))

  798.  

  799.         {

  800.  

  801.                 donate(id, command2, str_to_num(password));

  802.  

  803.         }

  804.  

  805.         else if (equali(command, "mybank", 6) || equali(command, "bank", 4))

  806.  

  807.         {

  808.  

  809.                 if(g_vars[save_type] == 2 && g_vars[allow_passwd])

  810.  

  811.                 {

  812.  

  813.                         if(equali(command2, "login", 5))

  814.  

  815.                         {

  816.  

  817.                                 if(g_Bank[id][loggin]) {

  818.  

  819.                                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_ALREADY");

  820.  

  821.                                         return PLUGIN_HANDLED;

  822.  

  823.                                 }

  824.  

  825.                                

  826.  

  827.                                 if(g_Bank[id][passwd][0] && equal(password, g_Bank[id][passwd]))

  828.  

  829.                                 {

  830.  

  831.                                         g_Bank[id][loggin] = true;

  832.  

  833.                                         SetAmmoBank(id, g_Bank[id][amount]);

  834.  

  835.                                         client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);

  836.  

  837.                                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_SUCCESS");

  838.  

  839.                                 }

  840.  

  841.                                 else

  842.  

  843.                                 {

  844.  

  845.                                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_BAD");

  846.  

  847.                                 }

  848.  

  849.                                

  850.  

  851.                                 return PLUGIN_HANDLED;

  852.  

  853.                         }

  854.  

  855.                         else if(!g_Bank[id][loggin])

  856.  

  857.                         {

  858.  

  859.                                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN");

  860.  

  861.                                 return PLUGIN_HANDLED;

  862.  

  863.                         }

  864.  

  865.                         else if(equali(command2, "password", 8))

  866.  

  867.                         {

  868.  

  869.                                 if(password[0])

  870.  

  871.                                 {

  872.  

  873.                                         g_Bank[id][passwd] = password;

  874.  

  875.                                         client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);

  876.  

  877.                                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SET", g_Bank[id][passwd]);

  878.  

  879.                                 }

  880.  

  881.                                 else

  882.  

  883.                                 {

  884.  

  885.                                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD", g_Bank[id][passwd]);

  886.  

  887.                                 }

  888.  

  889.                                 return PLUGIN_HANDLED;

  890.  

  891.                         }

  892.  

  893.                         else if(!g_Bank[id][passwd][0])

  894.  

  895.                                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SETHELP");

  896.  

  897.                 }

  898.  

  899.                

  900.  

  901.                 if(g_vars[mode] == 2)

  902.  

  903.                 {

  904.  

  905.                         ColorChat(id, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4");

  906.  

  907.                         return PLUGIN_CONTINUE;

  908.  

  909.                 }

  910.  

  911.                

  912.  

  913.                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK", g_Bank[id][amount]);    

  914.  

  915.                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2");

  916.  

  917.                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3");

  918.  

  919.         }

  920.  

  921.         else if (g_vars[mode] == 2)

  922.  

  923.                 return PLUGIN_CONTINUE;

  924.  

  925.         else if (equali(command, "deposit", 7) || equali(command, "send", 4) || equali(command, "store", 5))

  926.  

  927.         {

  928.  

  929.                 new user_ammo_packs = zp_get_user_ammo_packs(id);

  930.  

  931.                

  932.  

  933.                 if (equali(command2, "all")) set_packs = user_ammo_packs;

  934.  

  935.                 else set_packs = str_to_num(command2);

  936.  

  937.                

  938.  

  939.                 new limit_exceeded=false;

  940.  

  941.                

  942.  

  943.                 if (g_vars[save_limit] && set_packs > 0 && g_Bank[id][amount] + set_packs > g_vars[save_limit])

  944.  

  945.                 {

  946.  

  947.                         new overflow = g_Bank[id][amount] + set_packs - g_vars[save_limit];

  948.  

  949.                         set_packs -= overflow;

  950.  

  951.                        

  952.  

  953.                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_MAX", g_vars[save_limit]);

  954.  

  955.                        

  956.  

  957.                         limit_exceeded = true;

  958.  

  959.                 }

  960.  

  961.                

  962.  

  963.                 if (set_packs > 0)

  964.  

  965.                 {

  966.  

  967.                         if (user_ammo_packs >= set_packs)

  968.  

  969.                         {

  970.  

  971.                                 g_Bank[id][amount] += set_packs;

  972.  

  973.                                 zp_set_user_ammo_packs(id, user_ammo_packs - set_packs);

  974.  

  975.                                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT", set_packs, g_Bank[id][amount]);

  976.  

  977.                         }

  978.  

  979.                         else

  980.  

  981.                                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_ERR", set_packs, user_ammo_packs);

  982.  

  983.                        

  984.  

  985.                         return PLUGIN_HANDLED;

  986.  

  987.                 }

  988.  

  989.                 else if(!limit_exceeded)

  990.  

  991.                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2");

  992.  

  993.         }

  994.  

  995.         else if (equali(command, "withdraw", 8) || equali(command, "take", 4) || equali(command, "retrieve", 8) || equali(command, "wd", 2))

  996.  

  997.         {

  998.  

  999.                 new user_ammo_packs = zp_get_user_ammo_packs(id);

  1000.  

  1001.                

  1002.  

  1003.                 if (equali(command2, "all")) set_packs = g_Bank[id][amount];

  1004.  

  1005.                 else set_packs = str_to_num(command2);

  1006.  

  1007.                

  1008.  

  1009.                 if (set_packs > 0)

  1010.  

  1011.                 {

  1012.  

  1013.                         if (g_Bank[id][amount] >= set_packs)

  1014.  

  1015.                         {

  1016.  

  1017.                                 zp_set_user_ammo_packs(id, user_ammo_packs + set_packs);

  1018.  

  1019.                                 g_Bank[id][amount] -= set_packs;

  1020.  

  1021.                                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW", set_packs, g_Bank[id][amount]);

  1022.  

  1023.                         }

  1024.  

  1025.                         else

  1026.  

  1027.                                 ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW_ERR", set_packs, g_Bank[id][amount]);

  1028.  

  1029.                        

  1030.  

  1031.                         return PLUGIN_HANDLED;

  1032.  

  1033.                 }

  1034.  

  1035.                 else

  1036.  

  1037.                         ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3");

  1038.  

  1039.         }

  1040.  

  1041.        

  1042.  

  1043.         return PLUGIN_CONTINUE;

  1044.  

  1045. }

  1046.  

  1047.  

  1048.  

  1049. public donate(donater, const reciever_name[], ammo)

  1050.  

  1051. {

  1052.  

  1053.         if(!reciever_name[0] || ammo <= 0 || zp_get_user_ammo_packs(donater) < ammo)

  1054.  

  1055.         {

  1056.  

  1057.                 ColorChat(donater, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DONATE_USAGE");

  1058.  

  1059.                 return ;

  1060.  

  1061.         }

  1062.  

  1063.        

  1064.  

  1065.         new reciever = cmd_target(donater, reciever_name, CMDTARGET_ALLOW_SELF);

  1066.  

  1067.         if (!reciever || reciever == donater)

  1068.  

  1069.         {

  1070.  

  1071.                 ColorChat(donater, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "CL_NOT_FOUND");    

  1072.  

  1073.                 return ;

  1074.  

  1075.         }

  1076.  

  1077.        

  1078.  

  1079.         zp_set_user_ammo_packs(donater, zp_get_user_ammo_packs(donater)-ammo);

  1080.  

  1081.         zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever)+ammo);

  1082.  

  1083. }

  1084.  

  1085.  

  1086.  

  1087. public LoadClientBank(id)

  1088.  

  1089. {

  1090.  

  1091.         if (g_SqlTuple == Empty_Handle || g_Sql == Empty_Handle || g_Bank[id][async] == true)

  1092.  

  1093.                 return ;

  1094.  

  1095.        

  1096.  

  1097.         new szQuery[120];

  1098.  

  1099.         format(szQuery, 119,"SELECT amount,password FROM %s WHERE auth='%s';", g_vars[table], g_Bank[id][auth]);

  1100.  

  1101.        

  1102.  

  1103.         new szData[2];

  1104.  

  1105.         szData[0] = id;

  1106.  

  1107.         szData[1] = get_user_userid(id);

  1108.  

  1109.        

  1110.  

  1111.         SQL_ThreadQuery(g_SqlTuple, "LoadClient_QueryHandler", szQuery, szData, 2);

  1112.  

  1113. }

  1114.  

  1115.  

  1116.  

  1117. public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime)

  1118.  

  1119. {

  1120.  

  1121.         if(iFailState != TQUERY_SUCCESS)

  1122.  

  1123.         {

  1124.  

  1125.                 log_amx("%s SQL Error #%d - %s", PLUGIN_PREFIX, iErrnum, szError);

  1126.  

  1127.                 return ;

  1128.  

  1129.         }

  1130.  

  1131.        

  1132.  

  1133.         new id = szData[0];

  1134.  

  1135.        

  1136.  

  1137.         if (szData[1] != get_user_userid(id))

  1138.  

  1139.                 return ;

  1140.  

  1141.        

  1142.  

  1143.         new packs=0,info_pw[32];

  1144.  

  1145.        

  1146.  

  1147.         if(g_vars[mode] == 2)

  1148.  

  1149.                 packs = get_pcvar_num(g_vars[startedammo]);

  1150.  

  1151.        

  1152.  

  1153.         if(SQL_NumResults(hQuery))

  1154.  

  1155.         {

  1156.  

  1157.                 packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount"));

  1158.  

  1159.                 SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "password"), g_Bank[id][passwd], 31);

  1160.  

  1161.         }

  1162.  

  1163.        

  1164.  

  1165.         g_Bank[id][amount] = CheckLimit(packs);

  1166.  

  1167.         if(g_vars[allow_passwd] && g_Bank[id][passwd][0])

  1168.  

  1169.         {

  1170.  

  1171.                 get_user_info(id,g_vars[_pw_str],info_pw,31);

  1172.  

  1173.                 if(equal(info_pw, g_Bank[id][passwd]))

  1174.  

  1175.                 {

  1176.  

  1177.                         g_Bank[id][loggin] = true;

  1178.  

  1179.                 }

  1180.  

  1181.         }

  1182.  

  1183.         else

  1184.  

  1185.                 g_Bank[id][loggin] = true;

  1186.  

  1187.        

  1188.  

  1189.         if(g_Bank[id][ingame] == true && g_Bank[id][loggin] == true)

  1190.  

  1191.         {

  1192.  

  1193.                 SetAmmoBank(id, g_Bank[id][amount]);

  1194.  

  1195.         }

  1196.  

  1197.         g_Bank[id][async] = true;

  1198.  

  1199. }

  1200.  

  1201.  

  1202.  

  1203. public SaveClientBank(id)

  1204.  

  1205. {

  1206.  

  1207.         if (g_Sql == Empty_Handle)

  1208.  

  1209.                 return ;

  1210.  

  1211.        

  1212.  

  1213.         new packs = GetAmmoBank(id);

  1214.  

  1215.         packs = CheckLimit(packs);

  1216.  

  1217.        

  1218.  

  1219.         SQL_QuoteString(g_Sql, g_Bank[id][passwd], 31, g_Bank[id][passwd]);

  1220.  

  1221.         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());

  1222.  

  1223. }

  1224.  

  1225.  

  1226.  

  1227. stock GetAuthId(id, Buffer[]="", BufferSize=0)

  1228.  

  1229. {

  1230.  

  1231.         switch(g_vars[save_type])

  1232.  

  1233.         {

  1234.  

  1235.                 case 1: get_user_authid(id,Buffer,BufferSize);

  1236.  

  1237.                 case 2:

  1238.  

  1239.                 {

  1240.  

  1241.                         new name[32];

  1242.  

  1243.                         get_user_name(id,name,31);

  1244.  

  1245.                         SQL_QuoteString(g_Sql, Buffer, BufferSize, name);

  1246.  

  1247.                 }

  1248.  

  1249.                 case 3: get_user_ip(id,Buffer,BufferSize,true);

  1250.  

  1251.         }

  1252.  

  1253. }

  1254.  

  1255.  

  1256.  

  1257. public CheckLimit(packs)

  1258.  

  1259. {

  1260.  

  1261.         if(g_vars[save_limit] && packs > g_vars[save_limit])

  1262.  

  1263.         {

  1264.  

  1265.                 packs = g_vars[save_limit];

  1266.  

  1267.         }

  1268.  

  1269.         return packs;

  1270.  

  1271. }

  1272.  

  1273.  

  1274.  

  1275. public SetAmmoBank(id, packs)

  1276.  

  1277. {

  1278.  

  1279.         if(g_vars[mode] == 2)

  1280.  

  1281.                 zp_set_user_ammo_packs(id,packs);

  1282.  

  1283.         else

  1284.  

  1285.                 g_Bank[id][amount] = packs;

  1286.  

  1287. }

  1288.  

  1289.  

  1290.  

  1291. public GetAmmoBank(id)

  1292.  

  1293. {

  1294.  

  1295.         if(g_vars[mode] == 2)

  1296.  

  1297.                 return zp_get_user_ammo_packs(id);

  1298.  

  1299.        

  1300.  

  1301.         return g_Bank[id][amount];

  1302.  

  1303. }

  1304.  

  1305.  
if


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Küldési parancs
HozzászólásElküldve:2012.06.16. 12:52 
Offline
Őstag
Avatar

Csatlakozott:2011.11.15. 16:29
Hozzászólások:1142
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 24 alkalommal
[error]Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

files/7026608/7026608.sma(511) : error 017: undefined symbol "CHATCOLOR_GREY"
files/7026608/7026608.sma(511) : warning 215: expression has no effect
files/7026608/7026608.sma(511) : warning 215: expression has no effect
files/7026608/7026608.sma(511) : warning 215: expression has no effect
files/7026608/7026608.sma(511) : error 001: expected token: ";", but found ")"
files/7026608/7026608.sma(511) : error 029: invalid expression, assumed zero
files/7026608/7026608.sma(511) : fatal error 107: too many error messages on one line

Compilation aborted.
4 Errors.[/error]

4 errort dobott...:S

_________________
[url=http://www.gametracker.com/server_info/188.227.227.114:27286/][img]http://cache.www.gametracker.com/server_info/188.227.227.114:27286/b_350_20_323957_202743_F19A15_111111.png[/img][/url]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Küldési parancs
HozzászólásElküldve:2012.06.16. 12:55 
Offline
Veterán
Avatar

Csatlakozott:2011.06.07. 15:29
Hozzászólások:1728
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 63 alkalommal
Kód:
  1. #include <amxmodx>

  2.  

  3. #include <amxmisc>

  4.  

  5. #include <fakemeta>

  6.  

  7. #include <sqlx>

  8.  

  9. #include <zombieplague>

  10.  

  11. #include <colorchat>

  12.  

  13.  

  14.  

  15. #pragma semicolon 1

  16.  

  17.  

  18.  

  19. #if !defined MAX_PLAYERS

  20.  

  21.         #define MAX_PLAYERS 32

  22.  

  23. #endif

  24.  

  25.  

  26.  

  27. new PLUGIN_NAME[] = "[ZP]Addons: Bank SQL";

  28.  

  29. new PLUGIN_VERSION[] = "0.9.2";

  30.  

  31. new PLUGIN_AUTHOR[] = "Epmak";

  32.  

  33. new PLUGIN_PREFIX[] = "[ZP][Bank]";

  34.  

  35.  

  36.  

  37. enum vars_struct {

  38.  

  39.         mode=0,

  40.  

  41.         annonce,

  42.  

  43.        

  44.  

  45.         save_limit,

  46.  

  47.         save_days,

  48.  

  49.         save_type,

  50.  

  51.        

  52.  

  53.         block_cname,

  54.  

  55.         startedammo,

  56.  

  57.         allow_passwd,

  58.  

  59.         allow_donate,

  60.  

  61.        

  62.  

  63.         bool:round_end,

  64.  

  65.        

  66.  

  67.         _pw_str[32],

  68.  

  69.         table[32],

  70.  

  71.         config_dir[128]

  72.  

  73. };

  74.  

  75.  

  76.  

  77. enum bank_struct {

  78.  

  79.         bool:ingame,

  80.  

  81.         bool:async,

  82.  

  83.         bool:loggin,

  84.  

  85.         auth[36],

  86.  

  87.         passwd[32],

  88.  

  89.         amount

  90.  

  91. }

  92.  

  93.  

  94.  

  95. new g_vars[vars_struct];

  96.  

  97. new g_Bank[MAX_PLAYERS+1][bank_struct];

  98.  

  99. new Handle:g_Sql = Empty_Handle,Handle:g_SqlTuple = Empty_Handle;

  100.  

  101.  

  102.  

  103. public plugin_init()

  104.  

  105. {

  106.  

  107.         register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

  108.  

  109.         register_cvar("zp_bank_sql", PLUGIN_VERSION, FCVAR_SERVER);

  110.  

  111.        

  112.  

  113.         register_dictionary("zp_bank.txt");

  114.  

  115.         register_dictionary("common.txt");

  116.  

  117.        

  118.  

  119.         register_clcmd("say", "handle_say");

  120.  

  121.         register_clcmd("say_team", "handle_say");

  122.  

  123.        

  124.  

  125.         register_concmd("zp_bank_show", "cmdBankShow", ADMIN_ADMIN);

  126.  

  127.         register_concmd("zp_bank_set", "cmdBankSet", ADMIN_RCON, "<name or #userid> <+ or ->amount");

  128.  

  129.        

  130.  

  131.         g_vars[startedammo] = get_cvar_pointer("zp_starting_ammo_packs");

  132.  

  133.        

  134.  

  135.         register_srvcmd("zp_bank_connect", "db_connect");

  136.  

  137.        

  138.  

  139.         register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");

  140.  

  141.        

  142.  

  143.         server_cmd("zp_bank_connect");

  144.  

  145. }

  146.  

  147.  

  148.  

  149. public plugin_precache()

  150.  

  151. {

  152.  

  153.         get_configsdir(g_vars[config_dir], 127);

  154.  

  155.        

  156.  

  157.         g_vars[mode] = register_cvar("zp_bank", "1");

  158.  

  159.         g_vars[annonce] = register_cvar("zp_bank_annonce", "360.0");

  160.  

  161.         g_vars[save_limit] = register_cvar("zp_bank_save_limit", "1000");

  162.  

  163.         g_vars[save_days] = register_cvar("zp_bank_save_days", "24");

  164.  

  165.         g_vars[save_type] = register_cvar("zp_bank_save_type", "2");

  166.  

  167.         g_vars[block_cname] = register_cvar("zp_bank_block_name_change", "1");

  168.  

  169.         g_vars[allow_passwd] = register_cvar("zp_bank_allow_passwd", "1");

  170.  

  171.         g_vars[allow_donate] = register_cvar("zp_bank_allow_donate", "1");

  172.  

  173.        

  174.  

  175.         register_cvar("zp_bank_host", "127.0.0.1");

  176.  

  177.         register_cvar("zp_bank_user", "root");

  178.  

  179.         register_cvar("zp_bank_pass", "");

  180.  

  181.         register_cvar("zp_bank_db", "amxx");

  182.  

  183.         register_cvar("zp_bank_type", "mysql");

  184.  

  185.         register_cvar("zp_bank_table", "zp_bank");

  186.  

  187.         register_cvar("zp_bank_pw_str", "_bpw");

  188.  

  189.        

  190.  

  191.         server_cmd("exec %s/zp_bank.cfg", g_vars[config_dir]);

  192.  

  193.         server_exec();

  194.  

  195. }

  196.  

  197.  

  198.  

  199. public plugin_cfg()

  200.  

  201. {

  202.  

  203.         g_vars[mode] = get_pcvar_num(g_vars[mode]);

  204.  

  205.         g_vars[save_limit] = get_pcvar_num(g_vars[save_limit]);

  206.  

  207.         g_vars[save_days] = get_pcvar_num(g_vars[save_days]);

  208.  

  209.         g_vars[save_type] = get_pcvar_num(g_vars[save_type]);

  210.  

  211.         g_vars[block_cname] = get_pcvar_num(g_vars[block_cname]);

  212.  

  213.         g_vars[allow_passwd] = get_pcvar_num(g_vars[allow_passwd]);

  214.  

  215.         g_vars[allow_donate] = get_pcvar_num(g_vars[allow_donate]);

  216.  

  217.        

  218.  

  219.         if(g_vars[save_limit] < 0) g_vars[save_limit] = 0;

  220.  

  221.        

  222.  

  223.         if(get_pcvar_num(g_vars[annonce]))

  224.  

  225.                 set_task(get_pcvar_float(g_vars[annonce]), "print_annonce",_,_,_,"b");

  226.  

  227.        

  228.  

  229.         get_cvar_string("zp_bank_pw_str", g_vars[_pw_str], 31);

  230.  

  231. }

  232.  

  233.  

  234.  

  235. public plugin_end()

  236.  

  237. {

  238.  

  239.         if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);

  240.  

  241.         if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple);

  242.  

  243. }

  244.  

  245.  

  246.  

  247. public zp_round_started(gamemode, id)

  248.  

  249. {

  250.  

  251.         g_vars[round_end] = false;

  252.  

  253. }

  254.  

  255.  

  256.  

  257. public zp_round_ended(winteam)

  258.  

  259. {

  260.  

  261.         if (!g_vars[mode] || g_Sql == Empty_Handle)

  262.  

  263.                 return ;

  264.  

  265.        

  266.  

  267.         static i;

  268.  

  269.         for(i=1;i<=MAX_PLAYERS;i++)

  270.  

  271.         {

  272.  

  273.                 if(!g_Bank[i][ingame] || !g_Bank[i][loggin] || !g_Bank[i][async])

  274.  

  275.                         continue;

  276.  

  277.                

  278.  

  279.                 SaveClientBank(i);

  280.  

  281.         }

  282.  

  283.        

  284.  

  285.         g_vars[round_end] = true;

  286.  

  287. }

  288.  

  289.  

  290.  

  291. public client_connect(id)

  292.  

  293. {

  294.  

  295.         if (!g_vars[mode])

  296.  

  297.                 return ;

  298.  

  299.        

  300.  

  301.         GetAuthId(id, g_Bank[id][auth],35);

  302.  

  303.        

  304.  

  305.         g_Bank[id][amount] = 0;

  306.  

  307.         g_Bank[id][async] = false;

  308.  

  309.         g_Bank[id][loggin] = false;

  310.  

  311.        

  312.  

  313.         if(g_vars[mode] == 2)

  314.  

  315.                 zp_set_user_ammo_packs(id, get_pcvar_num(g_vars[startedammo]));

  316.  

  317.        

  318.  

  319.         LoadClientBank(id);

  320.  

  321. }

  322.  

  323.  

  324.  

  325. public client_putinserver(id)

  326.  

  327. {

  328.  

  329.         g_Bank[id][ingame] = true;

  330.  

  331.        

  332.  

  333.         if(g_Bank[id][async] == true && g_Bank[id][loggin] == true)

  334.  

  335.                 SetAmmoBank(id, g_Bank[id][amount]);

  336.  

  337. }

  338.  

  339.  

  340.  

  341. public client_disconnect(id)

  342.  

  343. {

  344.  

  345.         if (!g_vars[mode] || g_Sql == Empty_Handle)

  346.  

  347.                 return ;

  348.  

  349.        

  350.  

  351.         if(g_vars[round_end] == false && g_Bank[id][async] == true && g_Bank[id][loggin] == true)

  352.  

  353.                 SaveClientBank(id);

  354.  

  355.        

  356.  

  357.         g_Bank[id][ingame] = false;

  358.  

  359.         g_Bank[id][auth][0] = '^0';

  360.  

  361.         g_Bank[id][passwd][0] = '^0';

  362.  

  363. }

  364.  

  365.  

  366.  

  367. public cmdBankShow(id, level, cid)

  368.  

  369. {

  370.  

  371.         if (!cmd_access(id, level, cid, 1))

  372.  

  373.                 return PLUGIN_HANDLED;

  374.  

  375.        

  376.  

  377.         static pl_name[32], pl_amount[11], i;

  378.  

  379.         console_print(id, "%33s amount","name");

  380.  

  381.         for(i=1;i<=MAX_PLAYERS;i++)

  382.  

  383.         {

  384.  

  385.                 if(!g_Bank[i][ingame]) continue;

  386.  

  387.                

  388.  

  389.                 get_user_name(i,pl_name,31);

  390.  

  391.                

  392.  

  393.                 if(!g_Bank[i][async])

  394.  

  395.                         pl_amount = "not loaded";

  396.  

  397.                 else if(!g_Bank[i][loggin])

  398.  

  399.                         pl_amount = "not loggin";

  400.  

  401.                 else

  402.  

  403.                         num_to_str(GetAmmoBank(i),pl_amount,10);

  404.  

  405.                

  406.  

  407.                 console_print(id, "%33s %s", pl_name, pl_amount);

  408.  

  409.         }

  410.  

  411.        

  412.  

  413.         return PLUGIN_HANDLED;

  414.  

  415. }

  416.  

  417.  

  418.  

  419. public cmdBankSet(id, level, cid)

  420.  

  421. {

  422.  

  423.         if (!cmd_access(id, level, cid, 3))

  424.  

  425.                 return PLUGIN_HANDLED;

  426.  

  427.        

  428.  

  429.         static s_player[32], player, s_amount[12], i_amount;

  430.  

  431.         read_argv(1, s_player, 31);

  432.  

  433.         player = cmd_target(id, s_player, CMDTARGET_ALLOW_SELF);

  434.  

  435.        

  436.  

  437.         if (!player)

  438.  

  439.                 return PLUGIN_HANDLED;

  440.  

  441.        

  442.  

  443.         get_user_name(player,s_player,31);

  444.  

  445.         if(!g_Bank[player][async])

  446.  

  447.         {

  448.  

  449.                 console_print(id,"The player '%s' has not loaded bank", s_player);

  450.  

  451.                 return PLUGIN_HANDLED;

  452.  

  453.         }

  454.  

  455.         else if(!g_Bank[player][loggin])

  456.  

  457.         {

  458.  

  459.                 console_print(id,"The player '%s' has not loggin bank", s_player);

  460.  

  461.                 return PLUGIN_HANDLED;

  462.  

  463.         }

  464.  

  465.        

  466.  

  467.         read_argv(2, s_amount, 11);

  468.  

  469.         remove_quotes(s_amount);

  470.  

  471.         i_amount = str_to_num(s_amount);

  472.  

  473.        

  474.  

  475.         switch(s_amount[0])

  476.  

  477.         {

  478.  

  479.                 case '+':

  480.  

  481.                         SetAmmoBank(player, GetAmmoBank(player)+i_amount);

  482.  

  483.                 case '-':

  484.  

  485.                         SetAmmoBank(player, GetAmmoBank(player)-(0-i_amount));

  486.  

  487.                 default:

  488.  

  489.                         SetAmmoBank(player,i_amount);

  490.  

  491.         }

  492.  

  493.        

  494.  

  495.         return PLUGIN_HANDLED;

  496.  

  497. }

  498.  

  499.  

  500.  

  501. public print_annonce()

  502.  

  503. {

  504.  

  505.         if (!g_vars[mode] || g_Sql == Empty_Handle)

  506.  

  507.                 return ;

  508.  

  509.        

  510.  

  511.         ColorChat(0, GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE1");

  512.  

  513.         if(g_vars[mode] == 1)

  514.  

  515.         {

  516.  

  517.                 ColorChat(0, GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE2");

  518.  

  519.                 ColorChat(0, GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE3");

  520.  

  521.         }

  522.  

  523.         else

  524.  

  525.         {

  526.  

  527.                 ColorChat(0, GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4");

  528.  

  529.         }

  530.  

  531. }

  532.  

  533.  

  534.  

  535. public db_loadcurrent()

  536.  

  537. {

  538.  

  539.         for(new i=1;i<=MAX_PLAYERS;i++)

  540.  

  541.         {

  542.  

  543.                 if(g_Bank[i][async] || !g_Bank[i][ingame]) continue;

  544.  

  545.                

  546.  

  547.                 LoadClientBank(i);

  548.  

  549.         }

  550.  

  551. }

  552.  

  553.  

  554.  

  555. public db_connect(count)

  556.  

  557. {

  558.  

  559.         if(!g_vars[mode])

  560.  

  561.                 return ;

  562.  

  563.        

  564.  

  565.         new host[64], user[32], pass[32], db[128];

  566.  

  567.         new get_type[13], set_type[12];

  568.  

  569.         new error[128], errno;

  570.  

  571.        

  572.  

  573.         get_cvar_string("zp_bank_host", host, 63);

  574.  

  575.         get_cvar_string("zp_bank_user", user, 31);

  576.  

  577.         get_cvar_string("zp_bank_pass", pass, 31);

  578.  

  579.         get_cvar_string("zp_bank_type", set_type, 11);

  580.  

  581.         get_cvar_string("zp_bank_db", db, 127);

  582.  

  583.         get_cvar_string("zp_bank_table", g_vars[table], 31);

  584.  

  585.        

  586.  

  587.         if(is_module_loaded(set_type) == -1)

  588.  

  589.         {

  590.  

  591.                 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]);

  592.  

  593.                 return ;

  594.  

  595.         }

  596.  

  597.        

  598.  

  599.         SQL_GetAffinity(get_type, 12);

  600.  

  601.        

  602.  

  603.         if (!equali(get_type, set_type))

  604.  

  605.                 if (!SQL_SetAffinity(set_type))

  606.  

  607.                         log_amx("Failed to set affinity from %s to %s.", get_type, set_type);

  608.  

  609.        

  610.  

  611.         g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db);

  612.  

  613.        

  614.  

  615.         g_Sql = SQL_Connect(g_SqlTuple, errno, error, 127);

  616.  

  617.        

  618.  

  619.         if (g_Sql == Empty_Handle)

  620.  

  621.         {

  622.  

  623.                 server_print("%s SQL Error #%d - %s", PLUGIN_PREFIX, errno, error);

  624.  

  625.                

  626.  

  627.                 count += 1;

  628.  

  629.                 set_task(10.0, "db_connect", count);

  630.  

  631.                

  632.  

  633.                 return ;

  634.  

  635.         }

  636.  

  637.        

  638.  

  639.         SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8");

  640.  

  641.        

  642.  

  643.         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]);

  644.  

  645.         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]);

  646.  

  647.        

  648.  

  649.         CleanDataBase();

  650.  

  651.         if(count > 1)

  652.  

  653.                 db_loadcurrent();

  654.  

  655.        

  656.  

  657.         server_print("%s connected to: '%s://%s:****@%s/%s/%s'",PLUGIN_PREFIX, set_type, user, host, db, g_vars[table]);

  658.  

  659. }

  660.  

  661.  

  662.  

  663. public CleanDataBase()

  664.  

  665. {

  666.  

  667.         SQL_QueryAndIgnore(g_Sql, "DELETE FROM %s WHERE amount='0' AND password = '';", g_vars[table]);

  668.  

  669.        

  670.  

  671.         if (!g_vars[save_days]) return ;

  672.  

  673.        

  674.  

  675.         new curTime = get_systime();

  676.  

  677.         curTime -= ((g_vars[save_days] * 24) * 3600);

  678.  

  679.        

  680.  

  681.         SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_vars[table], curTime);

  682.  

  683. }

  684.  

  685.  

  686.  

  687. public fwClientUserInfoChanged(id, buffer)

  688.  

  689. {

  690.  

  691.         if (!g_vars[mode] || !is_user_connected(id))

  692.  

  693.                 return FMRES_IGNORED;

  694.  

  695.        

  696.  

  697.         new name[32], val[32], name_1[] = "name";

  698.  

  699.         get_user_name(id, name, 31);

  700.  

  701.         engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31);

  702.  

  703.         if (equal(val, name))

  704.  

  705.                 return FMRES_IGNORED;

  706.  

  707.        

  708.  

  709.         if(g_vars[block_cname])

  710.  

  711.         {

  712.  

  713.                 engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name);

  714.  

  715.                 client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);

  716.  

  717.                 console_print(id, "%L", id ,"NO_NAME_CHANGE");

  718.  

  719.         }

  720.  

  721.         else

  722.  

  723.         {

  724.  

  725.                 GetAuthId(id,g_Bank[id][auth],35);

  726.  

  727.                 return FMRES_IGNORED;

  728.  

  729.         }

  730.  

  731.  

  732.  

  733.         return FMRES_SUPERCEDE;

  734.  

  735. }

  736.  

  737.  

  738.  

  739. public handle_say(id)

  740.  

  741. {

  742.  

  743.         if(!g_vars[mode])

  744.  

  745.         {

  746.  

  747.                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DISABLED");

  748.  

  749.                

  750.  

  751.                 return PLUGIN_CONTINUE;

  752.  

  753.         }

  754.  

  755.         else if(g_Sql == Empty_Handle)

  756.  

  757.         {

  758.  

  759.                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ERR");

  760.  

  761.                

  762.  

  763.                 return PLUGIN_CONTINUE;

  764.  

  765.         }

  766.  

  767.         else if (!g_Bank[id][async])

  768.  

  769.                 return PLUGIN_CONTINUE;

  770.  

  771.        

  772.  

  773.         new text[60], command[16], command2[32], password[32], set_packs;

  774.  

  775.         read_args(text, 59);

  776.  

  777.         remove_quotes(text);

  778.  

  779.        

  780.  

  781.         command[0] = '^0';

  782.  

  783.         command2[0] = '^0';

  784.  

  785.         password[0] = '^0';

  786.  

  787.         parse(text, command, 15, command2, 31, password, 31);

  788.  

  789.        

  790.  

  791.         if (equali(command, "/", 1))

  792.  

  793.                 format(command, 15, command[1]);

  794.  

  795.        

  796.  

  797.         if (g_vars[allow_donate] && equali(command, "kuldes", 6))

  798.  

  799.         {

  800.  

  801.                 donate(id, command2, str_to_num(password));

  802.  

  803.         }

  804.  

  805.         else if (equali(command, "mybank", 6) || equali(command, "bank", 4))

  806.  

  807.         {

  808.  

  809.                 if(g_vars[save_type] == 2 && g_vars[allow_passwd])

  810.  

  811.                 {

  812.  

  813.                         if(equali(command2, "login", 5))

  814.  

  815.                         {

  816.  

  817.                                 if(g_Bank[id][loggin]) {

  818.  

  819.                                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_ALREADY");

  820.  

  821.                                         return PLUGIN_HANDLED;

  822.  

  823.                                 }

  824.  

  825.                                

  826.  

  827.                                 if(g_Bank[id][passwd][0] && equal(password, g_Bank[id][passwd]))

  828.  

  829.                                 {

  830.  

  831.                                         g_Bank[id][loggin] = true;

  832.  

  833.                                         SetAmmoBank(id, g_Bank[id][amount]);

  834.  

  835.                                         client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);

  836.  

  837.                                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_SUCCESS");

  838.  

  839.                                 }

  840.  

  841.                                 else

  842.  

  843.                                 {

  844.  

  845.                                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_BAD");

  846.  

  847.                                 }

  848.  

  849.                                

  850.  

  851.                                 return PLUGIN_HANDLED;

  852.  

  853.                         }

  854.  

  855.                         else if(!g_Bank[id][loggin])

  856.  

  857.                         {

  858.  

  859.                                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN");

  860.  

  861.                                 return PLUGIN_HANDLED;

  862.  

  863.                         }

  864.  

  865.                         else if(equali(command2, "password", 8))

  866.  

  867.                         {

  868.  

  869.                                 if(password[0])

  870.  

  871.                                 {

  872.  

  873.                                         g_Bank[id][passwd] = password;

  874.  

  875.                                         client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);

  876.  

  877.                                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SET", g_Bank[id][passwd]);

  878.  

  879.                                 }

  880.  

  881.                                 else

  882.  

  883.                                 {

  884.  

  885.                                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD", g_Bank[id][passwd]);

  886.  

  887.                                 }

  888.  

  889.                                 return PLUGIN_HANDLED;

  890.  

  891.                         }

  892.  

  893.                         else if(!g_Bank[id][passwd][0])

  894.  

  895.                                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SETHELP");

  896.  

  897.                 }

  898.  

  899.                

  900.  

  901.                 if(g_vars[mode] == 2)

  902.  

  903.                 {

  904.  

  905.                         ColorChat(id, GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4");

  906.  

  907.                         return PLUGIN_CONTINUE;

  908.  

  909.                 }

  910.  

  911.                

  912.  

  913.                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK", g_Bank[id][amount]);    

  914.  

  915.                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2");

  916.  

  917.                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3");

  918.  

  919.         }

  920.  

  921.         else if (g_vars[mode] == 2)

  922.  

  923.                 return PLUGIN_CONTINUE;

  924.  

  925.         else if (equali(command, "deposit", 7) || equali(command, "send", 4) || equali(command, "store", 5))

  926.  

  927.         {

  928.  

  929.                 new user_ammo_packs = zp_get_user_ammo_packs(id);

  930.  

  931.                

  932.  

  933.                 if (equali(command2, "all")) set_packs = user_ammo_packs;

  934.  

  935.                 else set_packs = str_to_num(command2);

  936.  

  937.                

  938.  

  939.                 new limit_exceeded=false;

  940.  

  941.                

  942.  

  943.                 if (g_vars[save_limit] && set_packs > 0 && g_Bank[id][amount] + set_packs > g_vars[save_limit])

  944.  

  945.                 {

  946.  

  947.                         new overflow = g_Bank[id][amount] + set_packs - g_vars[save_limit];

  948.  

  949.                         set_packs -= overflow;

  950.  

  951.                        

  952.  

  953.                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_MAX", g_vars[save_limit]);

  954.  

  955.                        

  956.  

  957.                         limit_exceeded = true;

  958.  

  959.                 }

  960.  

  961.                

  962.  

  963.                 if (set_packs > 0)

  964.  

  965.                 {

  966.  

  967.                         if (user_ammo_packs >= set_packs)

  968.  

  969.                         {

  970.  

  971.                                 g_Bank[id][amount] += set_packs;

  972.  

  973.                                 zp_set_user_ammo_packs(id, user_ammo_packs - set_packs);

  974.  

  975.                                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT", set_packs, g_Bank[id][amount]);

  976.  

  977.                         }

  978.  

  979.                         else

  980.  

  981.                                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_ERR", set_packs, user_ammo_packs);

  982.  

  983.                        

  984.  

  985.                         return PLUGIN_HANDLED;

  986.  

  987.                 }

  988.  

  989.                 else if(!limit_exceeded)

  990.  

  991.                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2");

  992.  

  993.         }

  994.  

  995.         else if (equali(command, "withdraw", 8) || equali(command, "take", 4) || equali(command, "retrieve", 8) || equali(command, "wd", 2))

  996.  

  997.         {

  998.  

  999.                 new user_ammo_packs = zp_get_user_ammo_packs(id);

  1000.  

  1001.                

  1002.  

  1003.                 if (equali(command2, "all")) set_packs = g_Bank[id][amount];

  1004.  

  1005.                 else set_packs = str_to_num(command2);

  1006.  

  1007.                

  1008.  

  1009.                 if (set_packs > 0)

  1010.  

  1011.                 {

  1012.  

  1013.                         if (g_Bank[id][amount] >= set_packs)

  1014.  

  1015.                         {

  1016.  

  1017.                                 zp_set_user_ammo_packs(id, user_ammo_packs + set_packs);

  1018.  

  1019.                                 g_Bank[id][amount] -= set_packs;

  1020.  

  1021.                                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW", set_packs, g_Bank[id][amount]);

  1022.  

  1023.                         }

  1024.  

  1025.                         else

  1026.  

  1027.                                 ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW_ERR", set_packs, g_Bank[id][amount]);

  1028.  

  1029.                        

  1030.  

  1031.                         return PLUGIN_HANDLED;

  1032.  

  1033.                 }

  1034.  

  1035.                 else

  1036.  

  1037.                         ColorChat(id, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3");

  1038.  

  1039.         }

  1040.  

  1041.        

  1042.  

  1043.         return PLUGIN_CONTINUE;

  1044.  

  1045. }

  1046.  

  1047.  

  1048.  

  1049. public donate(donater, const reciever_name[], ammo)

  1050.  

  1051. {

  1052.  

  1053.         if(!reciever_name[0] || ammo <= 0 || zp_get_user_ammo_packs(donater) < ammo)

  1054.  

  1055.         {

  1056.  

  1057.                 ColorChat(donater, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DONATE_USAGE");

  1058.  

  1059.                 return ;

  1060.  

  1061.         }

  1062.  

  1063.        

  1064.  

  1065.         new reciever = cmd_target(donater, reciever_name, CMDTARGET_ALLOW_SELF);

  1066.  

  1067.         if (!reciever || reciever == donater)

  1068.  

  1069.         {

  1070.  

  1071.                 ColorChat(donater, GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "CL_NOT_FOUND");    

  1072.  

  1073.                 return ;

  1074.  

  1075.         }

  1076.  

  1077.        

  1078.  

  1079.         zp_set_user_ammo_packs(donater, zp_get_user_ammo_packs(donater)-ammo);

  1080.  

  1081.         zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever)+ammo);

  1082.  

  1083. }

  1084.  

  1085.  

  1086.  

  1087. public LoadClientBank(id)

  1088.  

  1089. {

  1090.  

  1091.         if (g_SqlTuple == Empty_Handle || g_Sql == Empty_Handle || g_Bank[id][async] == true)

  1092.  

  1093.                 return ;

  1094.  

  1095.        

  1096.  

  1097.         new szQuery[120];

  1098.  

  1099.         format(szQuery, 119,"SELECT amount,password FROM %s WHERE auth='%s';", g_vars[table], g_Bank[id][auth]);

  1100.  

  1101.        

  1102.  

  1103.         new szData[2];

  1104.  

  1105.         szData[0] = id;

  1106.  

  1107.         szData[1] = get_user_userid(id);

  1108.  

  1109.        

  1110.  

  1111.         SQL_ThreadQuery(g_SqlTuple, "LoadClient_QueryHandler", szQuery, szData, 2);

  1112.  

  1113. }

  1114.  

  1115.  

  1116.  

  1117. public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime)

  1118.  

  1119. {

  1120.  

  1121.         if(iFailState != TQUERY_SUCCESS)

  1122.  

  1123.         {

  1124.  

  1125.                 log_amx("%s SQL Error #%d - %s", PLUGIN_PREFIX, iErrnum, szError);

  1126.  

  1127.                 return ;

  1128.  

  1129.         }

  1130.  

  1131.        

  1132.  

  1133.         new id = szData[0];

  1134.  

  1135.        

  1136.  

  1137.         if (szData[1] != get_user_userid(id))

  1138.  

  1139.                 return ;

  1140.  

  1141.        

  1142.  

  1143.         new packs=0,info_pw[32];

  1144.  

  1145.        

  1146.  

  1147.         if(g_vars[mode] == 2)

  1148.  

  1149.                 packs = get_pcvar_num(g_vars[startedammo]);

  1150.  

  1151.        

  1152.  

  1153.         if(SQL_NumResults(hQuery))

  1154.  

  1155.         {

  1156.  

  1157.                 packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount"));

  1158.  

  1159.                 SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "password"), g_Bank[id][passwd], 31);

  1160.  

  1161.         }

  1162.  

  1163.        

  1164.  

  1165.         g_Bank[id][amount] = CheckLimit(packs);

  1166.  

  1167.         if(g_vars[allow_passwd] && g_Bank[id][passwd][0])

  1168.  

  1169.         {

  1170.  

  1171.                 get_user_info(id,g_vars[_pw_str],info_pw,31);

  1172.  

  1173.                 if(equal(info_pw, g_Bank[id][passwd]))

  1174.  

  1175.                 {

  1176.  

  1177.                         g_Bank[id][loggin] = true;

  1178.  

  1179.                 }

  1180.  

  1181.         }

  1182.  

  1183.         else

  1184.  

  1185.                 g_Bank[id][loggin] = true;

  1186.  

  1187.        

  1188.  

  1189.         if(g_Bank[id][ingame] == true && g_Bank[id][loggin] == true)

  1190.  

  1191.         {

  1192.  

  1193.                 SetAmmoBank(id, g_Bank[id][amount]);

  1194.  

  1195.         }

  1196.  

  1197.         g_Bank[id][async] = true;

  1198.  

  1199. }

  1200.  

  1201.  

  1202.  

  1203. public SaveClientBank(id)

  1204.  

  1205. {

  1206.  

  1207.         if (g_Sql == Empty_Handle)

  1208.  

  1209.                 return ;

  1210.  

  1211.        

  1212.  

  1213.         new packs = GetAmmoBank(id);

  1214.  

  1215.         packs = CheckLimit(packs);

  1216.  

  1217.        

  1218.  

  1219.         SQL_QuoteString(g_Sql, g_Bank[id][passwd], 31, g_Bank[id][passwd]);

  1220.  

  1221.         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());

  1222.  

  1223. }

  1224.  

  1225.  

  1226.  

  1227. stock GetAuthId(id, Buffer[]="", BufferSize=0)

  1228.  

  1229. {

  1230.  

  1231.         switch(g_vars[save_type])

  1232.  

  1233.         {

  1234.  

  1235.                 case 1: get_user_authid(id,Buffer,BufferSize);

  1236.  

  1237.                 case 2:

  1238.  

  1239.                 {

  1240.  

  1241.                         new name[32];

  1242.  

  1243.                         get_user_name(id,name,31);

  1244.  

  1245.                         SQL_QuoteString(g_Sql, Buffer, BufferSize, name);

  1246.  

  1247.                 }

  1248.  

  1249.                 case 3: get_user_ip(id,Buffer,BufferSize,true);

  1250.  

  1251.         }

  1252.  

  1253. }

  1254.  

  1255.  

  1256.  

  1257. public CheckLimit(packs)

  1258.  

  1259. {

  1260.  

  1261.         if(g_vars[save_limit] && packs > g_vars[save_limit])

  1262.  

  1263.         {

  1264.  

  1265.                 packs = g_vars[save_limit];

  1266.  

  1267.         }

  1268.  

  1269.         return packs;

  1270.  

  1271. }

  1272.  

  1273.  

  1274.  

  1275. public SetAmmoBank(id, packs)

  1276.  

  1277. {

  1278.  

  1279.         if(g_vars[mode] == 2)

  1280.  

  1281.                 zp_set_user_ammo_packs(id,packs);

  1282.  

  1283.         else

  1284.  

  1285.                 g_Bank[id][amount] = packs;

  1286.  

  1287. }

  1288.  

  1289.  

  1290.  

  1291. public GetAmmoBank(id)

  1292.  

  1293. {

  1294.  

  1295.         if(g_vars[mode] == 2)

  1296.  

  1297.                 return zp_get_user_ammo_packs(id);

  1298.  

  1299.        

  1300.  

  1301.         return g_Bank[id][amount];

  1302.  

  1303. }

  1304.  

  1305.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Küldési parancs
HozzászólásElküldve:2012.06.16. 13:03 
Offline
Őstag
Avatar

Csatlakozott:2011.11.15. 16:29
Hozzászólások:1142
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 24 alkalommal
Thank You!

_________________
[url=http://www.gametracker.com/server_info/188.227.227.114:27286/][img]http://cache.www.gametracker.com/server_info/188.227.227.114:27286/b_350_20_323957_202743_F19A15_111111.png[/img][/url]


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  [6 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