amxx studió se fogja átalakítani mivel hibás a plugin javítva: ui: csak tudnám h mit keres jóváhagyottak között..
 Kód: #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <sqlx> #include <zombieplague> #include <colorchat>
  #pragma semicolon 1
  #if !defined MAX_PLAYERS #define MAX_PLAYERS 32 #endif #define CHATCOLOR_GREY GREY new PLUGIN_NAME[] = "[ZP]Addons: Bank SQL"; new PLUGIN_VERSION[] = "0.9.2"; new PLUGIN_AUTHOR[] = "Epmak"; new PLUGIN_PREFIX[] = "[ZP][Bank]";
  enum vars_struct {    mode=0,    annonce,        save_limit,    save_days,    save_type,        block_cname,    startedammo,    allow_passwd,    allow_donate,        bool:round_end,        _pw_str[32],    table[32],    config_dir[128] };
  enum bank_struct {    bool:ingame,    bool:async,    bool:loggin,    auth[36],    passwd[32],    amount }
  new g_vars[vars_struct]; new g_Bank[MAX_PLAYERS+1][bank_struct]; new Handle:g_Sql = Empty_Handle,Handle:g_SqlTuple = Empty_Handle;
  public plugin_init() {    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);    register_cvar("zp_bank_sql", PLUGIN_VERSION, FCVAR_SERVER);        register_dictionary("zp_bank.txt");    register_dictionary("common.txt");        register_clcmd("say", "handle_say");    register_clcmd("say_team", "handle_say");        register_concmd("zp_bank_show", "cmdBankShow", ADMIN_ADMIN);    register_concmd("zp_bank_set", "cmdBankSet", ADMIN_RCON, "<name or #userid> <+ or ->amount");        g_vars[startedammo] = get_cvar_pointer("zp_starting_ammo_packs");        register_srvcmd("zp_bank_connect", "db_connect");        register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");        server_cmd("zp_bank_connect"); }
  public plugin_precache() {    get_configsdir(g_vars[config_dir], 127);        g_vars[mode] = register_cvar("zp_bank", "1");    g_vars[annonce] = register_cvar("zp_bank_annonce", "360.0");    g_vars[save_limit] = register_cvar("zp_bank_save_limit", "1000");    g_vars[save_days] = register_cvar("zp_bank_save_days", "24");    g_vars[save_type] = register_cvar("zp_bank_save_type", "2");    g_vars[block_cname] = register_cvar("zp_bank_block_name_change", "1");    g_vars[allow_passwd] = register_cvar("zp_bank_allow_passwd", "1");    g_vars[allow_donate] = register_cvar("zp_bank_allow_donate", "1");        register_cvar("zp_bank_host", "127.0.0.1");    register_cvar("zp_bank_user", "root");    register_cvar("zp_bank_pass", "");    register_cvar("zp_bank_db", "amxx");    register_cvar("zp_bank_type", "mysql");    register_cvar("zp_bank_table", "zp_bank");    register_cvar("zp_bank_pw_str", "_bpw");        server_cmd("exec %s/zp_bank.cfg", g_vars[config_dir]);    server_exec(); }
  public plugin_cfg() {    g_vars[mode] = get_pcvar_num(g_vars[mode]);    g_vars[save_limit] = get_pcvar_num(g_vars[save_limit]);    g_vars[save_days] = get_pcvar_num(g_vars[save_days]);    g_vars[save_type] = get_pcvar_num(g_vars[save_type]);    g_vars[block_cname] = get_pcvar_num(g_vars[block_cname]);    g_vars[allow_passwd] = get_pcvar_num(g_vars[allow_passwd]);    g_vars[allow_donate] = get_pcvar_num(g_vars[allow_donate]);        if(g_vars[save_limit] < 0) g_vars[save_limit] = 0;        if(get_pcvar_num(g_vars[annonce]))       set_task(get_pcvar_float(g_vars[annonce]), "print_annonce",_,_,_,"b");        get_cvar_string("zp_bank_pw_str", g_vars[_pw_str], 31); }
  public plugin_end() {    if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);    if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple); }
  public zp_round_started(gamemode, id) {    g_vars[round_end] = false; }
  public zp_round_ended(winteam) {    if (!g_vars[mode] || g_Sql == Empty_Handle)       return ;        static i;    for(i=1;i<=MAX_PLAYERS;i++)    {       if(!g_Bank[i][ingame] || !g_Bank[i][loggin] || !g_Bank[i][async])          continue;              SaveClientBank(i);    }        g_vars[round_end] = true; }
  public client_connect(id) {    if (!g_vars[mode])       return ;        GetAuthId(id, g_Bank[id][auth],35);        g_Bank[id][amount] = 0;    g_Bank[id][async] = false;    g_Bank[id][loggin] = false;        if(g_vars[mode] == 2)       zp_set_user_ammo_packs(id, get_pcvar_num(g_vars[startedammo]));        LoadClientBank(id); }
  public client_putinserver(id) {    g_Bank[id][ingame] = true;        if(g_Bank[id][async] == true && g_Bank[id][loggin] == true)       SetAmmoBank(id, g_Bank[id][amount]); }
  public client_disconnect(id) {    if (!g_vars[mode] || g_Sql == Empty_Handle)       return ;        if(g_vars[round_end] == false && g_Bank[id][async] == true && g_Bank[id][loggin] == true)       SaveClientBank(id);        g_Bank[id][ingame] = false;    g_Bank[id][auth][0] = '^0';    g_Bank[id][passwd][0] = '^0'; }
  public cmdBankShow(id, level, cid) {    if (!cmd_access(id, level, cid, 1))       return PLUGIN_HANDLED;        static pl_name[32], pl_amount[11], i;    console_print(id, "%33s amount","name");    for(i=1;i<=MAX_PLAYERS;i++)    {       if(!g_Bank[i][ingame]) continue;              get_user_name(i,pl_name,31);              if(!g_Bank[i][async])          pl_amount = "not loaded";       else if(!g_Bank[i][loggin])          pl_amount = "not loggin";       else          num_to_str(GetAmmoBank(i),pl_amount,10);              console_print(id, "%33s %s", pl_name, pl_amount);    }        return PLUGIN_HANDLED; }
  public cmdBankSet(id, level, cid) {    if (!cmd_access(id, level, cid, 3))       return PLUGIN_HANDLED;        static s_player[32], player, s_amount[12], i_amount;    read_argv(1, s_player, 31);    player = cmd_target(id, s_player, CMDTARGET_ALLOW_SELF);        if (!player)       return PLUGIN_HANDLED;        get_user_name(player,s_player,31);    if(!g_Bank[player][async])    {       console_print(id,"The player '%s' has not loaded bank", s_player);       return PLUGIN_HANDLED;    }    else if(!g_Bank[player][loggin])    {       console_print(id,"The player '%s' has not loggin bank", s_player);       return PLUGIN_HANDLED;    }        read_argv(2, s_amount, 11);    remove_quotes(s_amount);    i_amount = str_to_num(s_amount);        switch(s_amount[0])    {       case '+':          SetAmmoBank(player, GetAmmoBank(player)+i_amount);       case '-':          SetAmmoBank(player, GetAmmoBank(player)-(0-i_amount));       default:       SetAmmoBank(player,i_amount);    }        return PLUGIN_HANDLED; }
  public print_annonce() {    if (!g_vars[mode] || g_Sql == Empty_Handle)       return ;        ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE1");    if(g_vars[mode] == 1)    {       ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE2");       ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE3");    }    else    {       ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4");    } }
  public db_loadcurrent() {    for(new i=1;i<=MAX_PLAYERS;i++)    {       if(g_Bank[i][async] || !g_Bank[i][ingame]) continue;              LoadClientBank(i);    } }
  public db_connect(count) {    if(!g_vars[mode])       return ;        new host[64], user[32], pass[32], db[128];    new get_type[13], set_type[12];    new error[128], errno;        get_cvar_string("zp_bank_host", host, 63);    get_cvar_string("zp_bank_user", user, 31);    get_cvar_string("zp_bank_pass", pass, 31);    get_cvar_string("zp_bank_type", set_type, 11);    get_cvar_string("zp_bank_db", db, 127);    get_cvar_string("zp_bank_table", g_vars[table], 31);        if(is_module_loaded(set_type) == -1)    {       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]);       return ;    }        SQL_GetAffinity(get_type, 12);        if (!equali(get_type, set_type))       if (!SQL_SetAffinity(set_type))       log_amx("Failed to set affinity from %s to %s.", get_type, set_type);        g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db);        g_Sql = SQL_Connect(g_SqlTuple, errno, error, 127);        if (g_Sql == Empty_Handle)    {       server_print("%s SQL Error #%d - %s", PLUGIN_PREFIX, errno, error);              count += 1;       set_task(10.0, "db_connect", count);              return ;    }        SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8");        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]);    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]);           CleanDataBase();    if(count > 1)       db_loadcurrent();        server_print("%s connected to: '%s://%s:****@%s/%s/%s'",PLUGIN_PREFIX, set_type, user, host, db, g_vars[table]); }
  public CleanDataBase() {    SQL_QueryAndIgnore(g_Sql, "DELETE FROM %s WHERE amount='0' AND password = '';", g_vars[table]);        if (!g_vars[save_days]) return ;        new curTime = get_systime();    curTime -= ((g_vars[save_days] * 24) * 3600);        SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_vars[table], curTime); }
  public fwClientUserInfoChanged(id, buffer) {    if (!g_vars[mode] || !is_user_connected(id))       return FMRES_IGNORED;        new name[32], val[32], name_1[] = "name";    get_user_name(id, name, 31);    engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31);    if (equal(val, name))       return FMRES_IGNORED;        if(g_vars[block_cname])    {       engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name);       client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);       console_print(id, "%L", id ,"NO_NAME_CHANGE");    }    else    {       GetAuthId(id,g_Bank[id][auth],35);       return FMRES_IGNORED;    }        return FMRES_SUPERCEDE; }
  public handle_say(id) {    if(!g_vars[mode])    {       ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DISABLED");              return PLUGIN_CONTINUE;    }    else if(g_Sql == Empty_Handle)    {       ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ERR");              return PLUGIN_CONTINUE;    }    else if (!g_Bank[id][async])       return PLUGIN_CONTINUE;        new text[60], command[16], command2[32], password[32], set_packs;    read_args(text, 59);    remove_quotes(text);        command[0] = '^0';    command2[0] = '^0';    password[0] = '^0';    parse(text, command, 15, command2, 31, password, 31);        if (equali(command, "/", 1))       format(command, 15, command[1]);        if (g_vars[allow_donate] && equali(command, "kuldes", 6))    {       donate(id, command2, str_to_num(password));    }    else if (equali(command, "mybank", 6) || equali(command, "bank", 4))    {       if(g_vars[save_type] == 2 && g_vars[allow_passwd])       {          if(equali(command2, "login", 5))          {             if(g_Bank[id][loggin]) {                ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_ALREADY");                return PLUGIN_HANDLED;             }                          if(g_Bank[id][passwd][0] && equal(password, g_Bank[id][passwd]))             {                g_Bank[id][loggin] = true;                SetAmmoBank(id, g_Bank[id][amount]);                client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);                ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_SUCCESS");             }             else             {                ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_BAD");             }                          return PLUGIN_HANDLED;          }          else if(!g_Bank[id][loggin])          {             ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN");             return PLUGIN_HANDLED;          }          else if(equali(command2, "password", 8))          {             if(password[0])             {                g_Bank[id][passwd] = password;                client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password);                ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SET", g_Bank[id][passwd]);             }             else             {                ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD", g_Bank[id][passwd]);             }             return PLUGIN_HANDLED;          }          else if(!g_Bank[id][passwd][0])             ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SETHELP");       }              if(g_vars[mode] == 2)       {          ColorChat(id, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4");          return PLUGIN_CONTINUE;       }              ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK", g_Bank[id][amount]);       ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2");       ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3");    }    else if (g_vars[mode] == 2)       return PLUGIN_CONTINUE;    else if (equali(command, "deposit", 7) || equali(command, "send", 4) || equali(command, "store", 5))    {       new user_ammo_packs = zp_get_user_ammo_packs(id);              if (equali(command2, "all")) set_packs = user_ammo_packs;       else set_packs = str_to_num(command2);              new limit_exceeded=false;              if (g_vars[save_limit] && set_packs > 0 && g_Bank[id][amount] + set_packs > g_vars[save_limit])       {          new overflow = g_Bank[id][amount] + set_packs - g_vars[save_limit];          set_packs -= overflow;                    ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_MAX", g_vars[save_limit]);                    limit_exceeded = true;       }              if (set_packs > 0)       {          if (user_ammo_packs >= set_packs)          {             g_Bank[id][amount] += set_packs;             zp_set_user_ammo_packs(id, user_ammo_packs - set_packs);             ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT", set_packs, g_Bank[id][amount]);          }          else             ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_ERR", set_packs, user_ammo_packs);                    return PLUGIN_HANDLED;       }       else if(!limit_exceeded)          ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2");    }    else if (equali(command, "withdraw", 8) || equali(command, "take", 4) || equali(command, "retrieve", 8) || equali(command, "wd", 2))    {       new user_ammo_packs = zp_get_user_ammo_packs(id);              if (equali(command2, "all")) set_packs = g_Bank[id][amount];       else set_packs = str_to_num(command2);              if (set_packs > 0)       {          if (g_Bank[id][amount] >= set_packs)          {             zp_set_user_ammo_packs(id, user_ammo_packs + set_packs);             g_Bank[id][amount] -= set_packs;             ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW", set_packs, g_Bank[id][amount]);          }          else             ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW_ERR", set_packs, g_Bank[id][amount]);                    return PLUGIN_HANDLED;       }       else          ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3");    }        return PLUGIN_CONTINUE; }
  public donate(donater, const reciever_name[], ammo) {    if(!reciever_name[0] || ammo <= 0 || zp_get_user_ammo_packs(donater) < ammo)    {       ColorChat(donater, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DONATE_USAGE");       return ;    }        new reciever = cmd_target(donater, reciever_name, CMDTARGET_ALLOW_SELF);    if (!reciever || reciever == donater)    {       ColorChat(donater, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "CL_NOT_FOUND");       return ;    }        zp_set_user_ammo_packs(donater, zp_get_user_ammo_packs(donater)-ammo);    zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever)+ammo); }
  public LoadClientBank(id) {    if (g_SqlTuple == Empty_Handle || g_Sql == Empty_Handle || g_Bank[id][async] == true)       return ;        new szQuery[120];    format(szQuery, 119,"SELECT amount,password FROM %s WHERE auth='%s';", g_vars[table], g_Bank[id][auth]);        new szData[2];    szData[0] = id;    szData[1] = get_user_userid(id);        SQL_ThreadQuery(g_SqlTuple, "LoadClient_QueryHandler", szQuery, szData, 2); }
  public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime) {    if(iFailState != TQUERY_SUCCESS)    {       log_amx("%s SQL Error #%d - %s", PLUGIN_PREFIX, iErrnum, szError);       return ;    }        new id = szData[0];        if (szData[1] != get_user_userid(id))       return ;        new packs=0,info_pw[32];        if(g_vars[mode] == 2)       packs = get_pcvar_num(g_vars[startedammo]);        if(SQL_NumResults(hQuery))    {       packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount"));       SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "password"), g_Bank[id][passwd], 31);    }        g_Bank[id][amount] = CheckLimit(packs);    if(g_vars[allow_passwd] && g_Bank[id][passwd][0])    {       get_user_info(id,g_vars[_pw_str],info_pw,31);       if(equal(info_pw, g_Bank[id][passwd]))       {          g_Bank[id][loggin] = true;       }    }    else       g_Bank[id][loggin] = true;        if(g_Bank[id][ingame] == true && g_Bank[id][loggin] == true)    {       SetAmmoBank(id, g_Bank[id][amount]);    }    g_Bank[id][async] = true; }
  public SaveClientBank(id) {    if (g_Sql == Empty_Handle)       return ;        new packs = GetAmmoBank(id);    packs = CheckLimit(packs);        SQL_QuoteString(g_Sql, g_Bank[id][passwd], 31, g_Bank[id][passwd]);    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()); }
  stock GetAuthId(id, Buffer[]="", BufferSize=0) {    switch(g_vars[save_type])    {       case 1: get_user_authid(id,Buffer,BufferSize);          case 2:       {          new name[32];          get_user_name(id,name,31);          SQL_QuoteString(g_Sql, Buffer, BufferSize, name);       }       case 3: get_user_ip(id,Buffer,BufferSize,true);       } }
  public CheckLimit(packs) {    if(g_vars[save_limit] && packs > g_vars[save_limit])    {       packs = g_vars[save_limit];    }    return packs; }
  public SetAmmoBank(id, packs) {    if(g_vars[mode] == 2)       zp_set_user_ammo_packs(id,packs);    else       g_Bank[id][amount] = packs; }
  public GetAmmoBank(id) {    if(g_vars[mode] == 2)       return zp_get_user_ammo_packs(id);        return g_Bank[id][amount]; } 
		 |