Zplague
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Zplague Entrar

Seu portal de Zombie Plague no Brasil


description[Pedido] Banco Simples Empty[Pedido] Banco Simples

more_horiz
bom teria como alguem pega o banco simples "/sacar,/depositar ..." e colocar o comando

/banco, ai tipow quando abro o banco aparece la,

Nome Do Banco

1 - Sacar
2 - Sacar Tudo
3 - Depositar
4 - Depositar Tudo
5- Doar Packs

ai tipow eu aperto o "1" sacar ai aparece la encima a quantidade pra mim sacar, nao consigo entender mto bem o pluguin, entao nao consegui fazer o que tenho em mente,

e no doar packs colocar o comando do pluguin donate ok ??? se ajudarem ficarei grato


@edit na verdade quero apenas q vcs coloquem os comandos

exemplo

escrevo no say /sacar

ai aparece la encima no lugar do say "coloque a quantidade"

ai é so eu digitar o numero da quantidade q saca!!!

description[Pedido] Banco Simples EmptyRe: [Pedido] Banco Simples

more_horiz
Voce tem a sma de algum ai ei posso fazer pra você

description[Pedido] Banco Simples EmptyRe: [Pedido] Banco Simples

more_horiz

Código:

/*================================================================================
   
   --------------------------------------
   -*- [ZP] Sub-Plugin: Ultimate Bank -*-
   --------------------------------------
   
   ~~~~~~~~~~~~~~~
   - Description -
   ~~~~~~~~~~~~~~~
   
   This plug-in offers the clients the possibility to save their
      ammo packs in a bank account and retrieve them when needed.
   Everything is configurable by cvar values.
   This bank has absolutely NO BUGS.
   This plug-in also has new features such as auto saving,
      auto withdrawing, ML and bot support.
   Enjoy it and have fun!
   
   Original forum thread: http://forums.alliedmods.net/showthread.php?t=132326
   
   ~~~~~~~~~~~~~
   - Thanks to -
   ~~~~~~~~~~~~~
   
      MeRcyLeZZ - For such an awesome mod like Zombie Plague
         and for some code i used from it...once again
      Random1 - For the original plug-in
      abdul-rehman - For suggesting removal of entity for ads
         and providing a option to replace it
      dorin2oo7 - For his pictures i used to style up my post
   
   ~~~~~~~~~~~~~~~~~
   - Multi-lingual -
   ~~~~~~~~~~~~~~~~~
   
      EN: Me (http://forums.alliedmods.net/member.php?u=42526)
      RO: Me (http://forums.alliedmods.net/member.php?u=42526)
      ES: DJHD! (http://forums.alliedmods.net/member.php?u=65176),
          lNeedHelp (http://forums.alliedmods.net/member.php?u=82951)
      RU: GAARA54 (http://forums.alliedmods.net/member.php?u=62855)
      BR: BRDominik (http://forums.alliedmods.net/member.php?u=80474)
      TR: AnqeL' (http://forums.alliedmods.net/member.php?u=83506)
      LV: Zyhm (http://forums.alliedmods.net/member.php?u=55789)
      PL: artos (http://forums.alliedmods.net/member.php?u=73986)
   
   ~~~~~~~~~~~~~~
   - To do list -
   ~~~~~~~~~~~~~~
   
      * Add donate
      * Add SQL support
   
   ~~~~~~~~~~~~~
   - Changelog -
   ~~~~~~~~~~~~~
   
   * v1.0 (11 Jul 2010)
      - First release
      - Added ML, auto-depositing/withdrawing,
        bot, steamid, ip, name saving support
      - Fixed all the bugs up to date
   
   * v1.1 (25 Sep 2010)
      - Fixed ML not displaying correctly when
        depositing a certain ammount of ammo packs
      - Fixed auto-withdraw bug which was
        giving players extra ammo packs
      - Replaced ad entity with a task
      - Added reseting the bank limit if it's
        set to a value lower than 1
      - Ads display now only the active options
      - Removed FakeMeta
   
================================================================================*/

#include <amxmodx>
#include <nvault>
#include <zombieplague>

#define CMDTARGET_OBEY_IMMUNITY (1<<0)
#define CMDTARGET_ALLOW_SELF   (1<<1)
#define CMDTARGET_ONLY_ALIVE   (1<<2)
#define CMDTARGET_NO_BOTS      (1<<3)

enum pcvar
{
   enable = 0,
   cap,
   start,
   advertise,
   deposit,
   withdraw,
   account,
   savetype,
   bot
}

new gvault, g_msgSayText, pcvars[pcvar], bankstorage[33]

public plugin_init()
{
   register_plugin("[ZP] Sub Plugin: Ultimate Bank", "1.1", "93()|29!/<, Random1");
   register_dictionary("zp_bank.txt")
   
   gvault = nvault_open("Zombie Bank Ultimate");
   g_msgSayText = get_user_msgid("SayText")
   
   pcvars[enable] =   register_cvar("zp_bank", "1");
   pcvars[cap] =      register_cvar("zp_bank_limit", "757");
   pcvars[start] =      register_cvar("zp_bank_blockstart", "0");
   pcvars[advertise] =   register_cvar("zp_bank_ad_delay", "275.7")
   pcvars[deposit] =   register_cvar("zp_bank_deposit", "1")
   pcvars[withdraw] =   register_cvar("zp_bank_withdraw", "1")
   pcvars[account] =   register_cvar("zp_bank_account", "1")
   pcvars[savetype] =   register_cvar("zp_bank_save_type", "1")
   pcvars[bot] =      register_cvar("zp_bank_bot_support", "1")
   
   if (get_pcvar_num(pcvars[cap]) > 2147483646)
   {
      set_pcvar_num(pcvars[cap], 2147483646);
      server_print("[%L] %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_LIMIT");
   }
   else if (get_pcvar_num(pcvars[cap]) < 1)
      set_pcvar_num(pcvars[cap], 1);
   
   register_clcmd("say", "handle_say");
   register_clcmd("say_team", "handle_say");
   
   if (get_pcvar_num(pcvars[advertise]))
      set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
}

public plugin_cfg()
{
   // Plugin is disabled
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   // Get configs dir
   new cfgdir[32]
   get_configsdir(cfgdir, charsmax(cfgdir))
   
   // Execute config file (zp_rewards.cfg)
   server_cmd("exec %s/zp_bank.cfg", cfgdir)
}

public advertise_loop()
{
   if (!get_pcvar_num(pcvars[enable]) || !get_pcvar_float(pcvars[advertise]))
   {
      remove_task()
      
      return;
   }
   
   if (get_pcvar_num(pcvars[cap]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO1", get_pcvar_num(pcvars[cap]));
   
   if (get_pcvar_num(pcvars[deposit]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_DPS");
   else
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_AS");
   
   if (get_pcvar_num(pcvars[withdraw]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_WD");
   
   set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
}

public plugin_end()
   nvault_close(gvault);
   
public handle_say(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return PLUGIN_CONTINUE;
   
   new text[70], arg1[32], arg2[32], arg3[6];
   read_args(text, sizeof(text) - 1);
   remove_quotes(text);
   arg1[0] = '^0';
   arg2[0] = '^0';
   arg3[0] = '^0';
   parse(text, arg1, sizeof(arg1) - 1, arg2, sizeof(arg2) - 1, arg3, sizeof(arg3) - 1);

   //strip forward slash if present
   if (equali(arg1, "/", 1))
      format(arg1, 31, arg1[1]);
   
   // if the chat line has more than 2 words, we're not interested at all
   if (arg3[0])
      return PLUGIN_CONTINUE;
   
   if (equali(arg1, "deposit", 7) || equali(arg1, "save", 4) || equali(arg1, "store", 5))
   {
      if (!get_pcvar_num(pcvars[deposit]))
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DNA");
         
         return PLUGIN_CONTINUE;
      }
      
      if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
      {
         new amount = str_to_num(arg2);
         if (amount <= 0)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
            
            return PLUGIN_CONTINUE;
         }
         store_packs(id, amount);
         
         return PLUGIN_HANDLED;
      }
      else if (equali(arg2, "all"))
      {
         store_packs(id, 0);
         
         return PLUGIN_HANDLED;
      }
      else if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_DPS");
         
         return PLUGIN_CONTINUE;
      }
      
      return PLUGIN_CONTINUE;
   }
   else if (equali(arg1, "withdraw", 8) || equali(arg1, "take", 4) || equali(arg1, "retrieve", 8))
   {
      if (!get_pcvar_num(pcvars[withdraw]))
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WNA");
         
         return PLUGIN_CONTINUE;
      }
      
      if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
      {
         new amount = str_to_num(arg2);
         if (amount <= 0)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
            
            return PLUGIN_CONTINUE;
         }
         take_packs(id, amount);
         
         return PLUGIN_HANDLED;
      }
      else if (equali(arg2, "all", 3) || equali(arg2, "everything", 10))
      {
         take_packs(id, 0);
         
         return PLUGIN_HANDLED;
      }
      else if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_WD");
         
         return PLUGIN_CONTINUE;
      }
      
      return PLUGIN_CONTINUE;
   }
   else if (equali(arg1, "packs", 6) || equali(arg1, "account", 7) || equali(arg1, "bank", 4))
   {
      if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_INFO_CHK1", bankstorage[id]);
         
         return PLUGIN_HANDLED;
      }
      else
      {
         new id2 = cmd_target(id, arg2, 2);
         if (!id2)
            return PLUGIN_CONTINUE;
         
         static id2name[32];
         get_user_name(id2, id2name, 31);
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_INFO_CHK2", id2name, bankstorage[id2]);
         
         return PLUGIN_HANDLED;
      }
      
      return PLUGIN_CONTINUE;
   }
   
   return PLUGIN_CONTINUE;
}

//public zp_user_disconnect_pre(id)
public client_disconnect(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   if (is_user_bot(id) && !get_pcvar_num(pcvars[bot]) || !zp_get_user_ammo_packs(id))
      return;
   else
      store_packs(id, 0);
   
   if (bankstorage[id] > 0)
      save_data(id);
}

//public zp_user_connect_post(id)
public client_putinserver(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   bankstorage[id] = 0; //clear residual before loading
   retrieve_data(id);
   if (!get_pcvar_num(pcvars[withdraw]))
   {
      if (!bankstorage[id] || is_user_bot(id) && !get_pcvar_num(pcvars[bot]))
         return;
      
      take_packs(id, 0)
   }
}

store_packs(id, amnt)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   new temp = zp_get_user_ammo_packs(id);
   new limit = get_pcvar_num(pcvars[cap]);
   new fill = limit - bankstorage[id];
   
   if (!temp)
   {
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NAPTD")
      
      return;
   }
   
   if (amnt == 0)
   {
      if (bankstorage[id] + temp <= limit)
      {
         bankstorage[id] += temp;
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DPST", temp)
         zp_set_user_ammo_packs(id, 0);
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
         if (!fill)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
            
            return;
         }
         else
         {
            bankstorage[id] += fill
            zp_set_user_ammo_packs(id, temp - fill);
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PADPST", fill);
         }
      }
      checkmax(id);
   }
   else if (amnt > 0)
   {      
      if (temp >= amnt)
      {         
         if (bankstorage[id] + amnt <= limit)
         {
            bankstorage[id] += amnt
            zp_set_user_ammo_packs(id, temp - amnt);
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DPST", amnt)
         }
         else
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
            if (!fill)
            {
               zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
               
               return;
            }
            else
            {
               bankstorage[id] += fill
               zp_set_user_ammo_packs(id, temp - fill);
               zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PDPST", fill, amnt);
            }
         }
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASTDG", amnt, temp);
         
         return;
      }
   }
}

take_packs(id, amnt)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   if (!bankstorage[id])
   {
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NPIA")
      
      return;
   }
   
   if (amnt == 0)
   {
      zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + bankstorage[id])
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WALL", bankstorage[id])
      bankstorage[id] = 0;
   }
   else if (amnt > 0)
   {
      if (bankstorage[id] >= amnt)
      {
         zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amnt);
         bankstorage[id] -= amnt;
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WAM", amnt)
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASGB", amnt, bankstorage[id]);
         
         return;
      }
   }
}

save_data(id)
{
   new vaultkey[40], vaultdata[13];
   
   switch (get_pcvar_num(pcvars[savetype]))
   {
      case 1:
      {
         new AuthID[33];
         get_user_authid(id, AuthID, 32);
         
         formatex(vaultkey, 39, "__%s__", AuthID);
      }
      case 2:
      {
         new IP[33];
         get_user_ip(id, IP, 32);
         
         formatex(vaultkey, 39, "__%s__", IP);
      }
      case 3:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name);
      }
   }
   formatex(vaultdata, 12, "%i", bankstorage[id]);
   nvault_set(gvault, vaultkey, vaultdata);
}

retrieve_data(id)
{
   new vaultkey[40], vaultdata[13];
   
   switch (get_pcvar_num(pcvars[savetype]))
   {
      case 1:
      {
         new AuthID[33];
         get_user_authid(id, AuthID, 32);
         
         formatex(vaultkey, 39, "__%s__", AuthID);
      }
      case 2:
      {
         new IP[33];
         get_user_ip(id, IP, 32);
         
         formatex(vaultkey, 39, "__%s__", IP);
      }
      case 3:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name);
      }
   }
   nvault_get(gvault, vaultkey, vaultdata, 12);
   
   bankstorage[id] = str_to_num(vaultdata);
   checkmax(id);   
   
   // If they have an account don't allow zombie mod to give them 5 ammo packs at beggining
   if (get_pcvar_num(pcvars[start]) && bankstorage[id] > 0)
      zp_set_user_ammo_packs(id, 0);
}

checkmax(id)
{
   if (bankstorage[id] > get_pcvar_num(pcvars[cap]))
      bankstorage[id] = get_pcvar_num(pcvars[cap]);
   else if (bankstorage[id] < 0)
      bankstorage[id] = 0;
}

// Colored chat print by MeRcyLeZZ
zp_colored_print(target, const message[], any:...)
{
   static buffer[512], i, argscount
   argscount = numargs()
   
   // Send to everyone
   if (!target)
   {
      static player
      for (player = 1; player <= get_maxplayers(); player++)
      {
         // Not connected
         if (!is_user_connected(player))
            continue;
         
         // Remember changed arguments
         static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
         changedcount = 0
         
         // Replace LANG_PLAYER with player id
         for (i = 2; i < argscount; i++)
         {
            if (getarg(i) == LANG_PLAYER)
            {
               setarg(i, 0, player)
               changed[changedcount] = i
               changedcount++
            }
         }
         
         // Format message for player
         vformat(buffer, charsmax(buffer), message, 3)
         
         // Send it
         message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
         write_byte(player)
         write_string(buffer)
         message_end()
         
         // Replace back player id's with LANG_PLAYER
         for (i = 0; i < changedcount; i++)
            setarg(changed[i], 0, LANG_PLAYER)
      }
   }
   // Send to specific target
   else
   {
      // Format message for player
      vformat(buffer, charsmax(buffer), message, 3)
      
      // Send it
      message_begin(MSG_ONE, g_msgSayText, _, target)
      write_byte(target)
      write_string(buffer)
      message_end()
   }
}

// Stock from AmxMisc
stock get_configsdir(name[], len)
   return get_localinfo("amxx_configsdir", name, len);

stock cmd_target(id,const arg[],flags = CMDTARGET_OBEY_IMMUNITY)
{
   new player = find_player("bl",arg);
   if (player)
   {
      if ( player != find_player("blj",arg) )
      {
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("There are more clients matching to your argument"));
#else
         console_print(id,"%L",id,"MORE_CL_MATCHT");
#endif
         return 0;
      }
   }
   else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] )
   {
      player = find_player("k",str_to_num(arg[1]));
   }
   if (!player)
   {
#if defined AMXMOD_BCOMPAT
      console_print(id, SIMPLE_T("Client with that name or userid not found"));
#else
      console_print(id,"%L",id,"CL_NOT_FOUND");
#endif
      return 0;
   }
   if (flags & CMDTARGET_OBEY_IMMUNITY)
   {
      if ((get_user_flags(player) & ADMIN_IMMUNITY) &&
         ((flags & CMDTARGET_ALLOW_SELF) ? (id != player) : true) )
      {
         new imname[32];
         get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname);
#else
         console_print(id,"%L",id,"CLIENT_IMM",imname);
#endif
         return 0;
      }
   }
   if (flags & CMDTARGET_ONLY_ALIVE)
   {
      if (!is_user_alive(player))
      {
         new imname[32];
         get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname);
#else
         console_print(id,"%L",id,"CANT_PERF_DEAD",imname);
#endif
         return 0;
      }
   }
   if (flags & CMDTARGET_NO_BOTS)
   {
      if (is_user_bot(player))
      {
         new imname[32];
         get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname);
#else
         console_print(id,"%L",id,"CANT_PERF_BOT",imname);
#endif
         return 0;
      }
   }
   return player;
}

description[Pedido] Banco Simples EmptyRe: [Pedido] Banco Simples

more_horiz
Ta aqui mano eu não testei mais qualquer problema você me avisa eu não consegui colocar o donate ainda não quando consegui eu posto ele aqui com donate pra você

Código:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <nvault>
#include <zombieplague>
#include <ColorChat>

#define is_valid_player(%1) (1 <= %1 <= 32)

#define CMDTARGET_OBEY_IMMUNITY (1<<0)
#define CMDTARGET_ALLOW_SELF   (1<<1)
#define CMDTARGET_ONLY_ALIVE   (1<<2)
#define CMDTARGET_NO_BOTS      (1<<3)

const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

enum pcvar
{
   enable = 0,
   cap,
   start,
   advertise,
   deposit,
   withdraw,
   account,
   savetype,
   bot
}

new   cvar_punhish,
   cvar_tentativas,
   cvar_bantime,
   g_msgSyncHud;
   
new    bool:g_logado[33],
   bool:plSteam[33],
   bool:plRegistrado[33];

new gvault, g_msgSayText, pcvars[pcvar], bankstorage[33]

public plugin_init()
{
   register_plugin("[ZP] Sub Plugin: Ultimate Bank", "1.1", "93()|29!/<, Random1");
   register_clcmd("say /login", "show_menu1")
   
   register_dictionary("zp_bank.txt")
   
   gvault = nvault_open("Zombie Bank Ultimate");
   g_msgSayText = get_user_msgid("SayText")
   
   pcvars[enable] =   register_cvar("zp_bank", "1");
   pcvars[cap] =      register_cvar("zp_bank_limit", "757");
   pcvars[start] =      register_cvar("zp_bank_blockstart", "0");
   pcvars[advertise] =   register_cvar("zp_bank_ad_delay", "275.7")
   pcvars[deposit] =   register_cvar("zp_bank_deposit", "1")
   pcvars[withdraw] =   register_cvar("zp_bank_withdraw", "1")
   pcvars[account] =   register_cvar("zp_bank_account", "1")
   pcvars[savetype] =   register_cvar("zp_bank_save_type", "1")
   pcvars[bot] =      register_cvar("zp_bank_bot_support", "1")
   register_clcmd("[Depositar]Quantia_", "cmd_depositar")
   register_clcmd("[Sacar]Quantia_", "cmd_sacar")

   
   if (get_pcvar_num(pcvars[cap]) > 2147483646)
   {
      set_pcvar_num(pcvars[cap], 2147483646);
      server_print("[%L] %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_LIMIT");
   }
   else if (get_pcvar_num(pcvars[cap]) < 1)
      set_pcvar_num(pcvars[cap], 1);
   
   register_clcmd("say", "handle_say");
   register_clcmd("say_team", "handle_say");
   
   // Hooks
   register_clcmd("jointeam", "Event_JoinTeam")
   
   g_msgSyncHud = CreateHudSyncObj();

   
   if (get_pcvar_num(pcvars[advertise]))
      set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
}

public plugin_cfg()
{
   // Plugin is disabled
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   // Get configs dir
   new cfgdir[32]
   get_configsdir(cfgdir, charsmax(cfgdir))
   
   // Execute config file (zp_rewards.cfg)
   server_cmd("exec %s/zp_bank.cfg", cfgdir)
}

public advertise_loop()
{
   if (!get_pcvar_num(pcvars[enable]) || !get_pcvar_float(pcvars[advertise]))
   {
      remove_task()
      
      return;
   }
   
   if (get_pcvar_num(pcvars[cap]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO1", get_pcvar_num(pcvars[cap]));
   
   if (get_pcvar_num(pcvars[deposit]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_DPS");
   else
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_AS");
   
   if (get_pcvar_num(pcvars[withdraw]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_WD");
   
   set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
}
public plugin_end()
{
   nvault_close(gvault);
   nvault_close(n_vault)
   nvault_close(n_vault2)
   nvault_close(n_vault3)
}
public handle_say(id, key)
{
   if (!get_pcvar_num(pcvars[enable]))
      return PLUGIN_CONTINUE;
   
   new text[70], arg1[32], arg2[32], arg3[6];
   read_args(text, sizeof(text) - 1);
   remove_quotes(text);
   arg1[0] = '^0';
   arg2[0] = '^0';
   arg3[0] = '^0';
   parse(text, arg1, sizeof(arg1) - 1, arg2, sizeof(arg2) - 1, arg3, sizeof(arg3) - 1);

   //strip forward slash if present
   if (equali(arg1, "/", 1))
      format(arg1, 31, arg1[1]);
   
   // if the chat line has more than 2 words, we're not interested at all
   if (arg3[0])
      return PLUGIN_CONTINUE;
   
   if (equali(arg1, "deposit", 7) || equali(arg1, "save", 4) || equali(arg1, "store", 5) || equali(arg1, "depositar", 6))
   {
      if (!get_pcvar_num(pcvars[deposit]))
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DNA");
         
         return PLUGIN_CONTINUE;
      }
      
      if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
      {
         new amount = str_to_num(arg2);
         if (amount <= 0)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
            
            return PLUGIN_CONTINUE;
         }
         store_packs(id, amount);
         
         return PLUGIN_HANDLED;
      }
      else if (equali(arg2, "all"))
      {
         store_packs(id, 0);
         
         return PLUGIN_HANDLED;
      }
      else if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_DPS");
         
         return PLUGIN_CONTINUE;
      }
      
      return PLUGIN_CONTINUE;
   }
   else if (equali(arg1, "withdraw", 8) || equali(arg1, "take", 4) || equali(arg1, "retrieve", 8) || equali(arg1, "sacar", 8) || equali(arg1, "saque", 8))
   {
      if (!get_pcvar_num(pcvars[withdraw]))
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WNA");
         
         return PLUGIN_CONTINUE;
      }
      
      if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
      {
         new amount = str_to_num(arg2);
         if (amount <= 0)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
            
            return PLUGIN_CONTINUE;
         }
         take_packs(id, amount);
         
         return PLUGIN_HANDLED;
      }
      else if (equali(arg2, "all", 3) || equali(arg2, "everything", 10))
      {
         take_packs(id, 0);
         
         return PLUGIN_HANDLED;
      }
      else if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_WD");
         
         return PLUGIN_CONTINUE;
      }
      
      return PLUGIN_CONTINUE;
   }
   else if (equali(arg1, "packs", 6) || equali(arg1, "account", 7) || equali(arg1, "bank", 4) || equali(arg1, "banco", 5))
   {
      if (!arg2[0])
      {
         menuBank(id)
         
         return PLUGIN_HANDLED;
      }
      else
      {
         new id2 = cmd_target(id, arg2, 2);
         if (!id2)
            return PLUGIN_CONTINUE;
         
         static id2name[32];
         get_user_name(id2, id2name, 31);
         zp_colored_print(id, "^x04[Banco ZP]^x01 O jogador^x03 %s^x01 tem^x03 %d^x01 ammo packs depositados em sua conta.", id2name, bankstorage[id2]);
         
         return PLUGIN_HANDLED;
      }
      
      return PLUGIN_CONTINUE;
   }
   
   return PLUGIN_CONTINUE;
}

//public zp_user_disconnect_pre(id)
public client_disconnect(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   if (is_user_bot(id) && !get_pcvar_num(pcvars[bot]) || !zp_get_user_ammo_packs(id))
      return;
   else
      store_packs(id, 0);
   
   if (bankstorage[id] > 0)
      save_data(id);
}

//public zp_user_connect_post(id)
public client_putinserver(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   bankstorage[id] = 0; //clear residual before loading
   retrieve_data(id);
   if (!get_pcvar_num(pcvars[withdraw]))
   {
      if (!bankstorage[id] || is_user_bot(id) && !get_pcvar_num(pcvars[bot]))
         return;
      
      take_packs(id, 0)
   }
}

store_packs(id, amnt)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   new temp = zp_get_user_ammo_packs(id);
   new limit = get_pcvar_num(pcvars[cap]);
   new fill = limit - bankstorage[id];
   
   if (!temp)
   {
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NAPTD")
      
      return;
   }
   
   if (amnt == 0)
   {
      if (bankstorage[id] + temp <= limit)
      {
         bankstorage[id] += temp;
         ColorChat(id, GREEN, "[Banco ZP]^1 Depositados^3 %i^1 Ammopacks. Voce tem um total de^3 %i^1 Ammopacks.", temp, bankstorage[id])
         zp_set_user_ammo_packs(id, 0);
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
         if (!fill)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
            
            return;
         }
         else
         {
            bankstorage[id] += fill
            zp_set_user_ammo_packs(id, temp - fill);
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PADPST", fill);
         }
      }
      checkmax(id);
   }
   else if (amnt > 0)
   {      
      if (temp >= amnt)
      {         
         if (bankstorage[id] + amnt <= limit)
         {
            bankstorage[id] += amnt
            zp_set_user_ammo_packs(id, temp - amnt);
            ColorChat(id, GREEN, "[Banco ZP]^1 Depositados^3 %i^1 Ammopacks. Voce tem um total de^3 %i^1 Ammopacks.", amnt, bankstorage[id])
         }
         else
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
            if (!fill)
            {
               zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
               
               return;
            }
            else
            {
               bankstorage[id] += fill
               zp_set_user_ammo_packs(id, temp - fill);
               zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PDPST", fill, amnt);
            }
         }
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASTDG", amnt, temp);
         
         return;
      }
   }
}

take_packs(id, amnt)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   if (!bankstorage[id])
   {
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NPIA")
      
      return;
   }
   
   if (amnt == 0)
   {
      zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + bankstorage[id])
      ColorChat(id, GREEN, "[Panic Bank]^1 Voce Sacou^3 %i^1 Ammopacks.", bankstorage[id])
      bankstorage[id] = 0;
   }
   else if (amnt > 0)
   {
      if (bankstorage[id] >= amnt)
      {
         zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amnt);
         bankstorage[id] -= amnt;
         ColorChat(id, GREEN, "[Panic Bank]^1 Voce Sacou^3 %i^1 Ammopacks.", amnt)
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASGB", amnt, bankstorage[id]);
         
         return;
      }
   }
}

save_data(id)
{
   new vaultkey[40], vaultdata[13];
   
   switch (get_pcvar_num(pcvars[savetype]))
   {
      case 1:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
      case 2:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
      case 3:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
      case 4:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
   }
   formatex(vaultdata, 12, "%i", bankstorage[id]);
   nvault_set(gvault, vaultkey, vaultdata);
}

retrieve_data(id)
{
   new vaultkey[40], vaultdata[13];
   
   switch (get_pcvar_num(pcvars[savetype]))
   {
      case 1:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
      case 2:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
      case 3:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
      case 4:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name, name_log, password2);
      }
   }
   nvault_get(gvault, vaultkey, vaultdata, 12);
   
   bankstorage[id] = str_to_num(vaultdata);
   checkmax(id);   
   
   // If they have an account don't allow zombie mod to give them 5 ammo packs at beggining
   if (get_pcvar_num(pcvars[start]) && bankstorage[id] > 0)
      zp_set_user_ammo_packs(id, 0);
}

checkmax(id)
{
   if (bankstorage[id] > get_pcvar_num(pcvars[cap]))
      bankstorage[id] = get_pcvar_num(pcvars[cap]);
   else if (bankstorage[id] < 0)
      bankstorage[id] = 0;
}

// Colored chat print by MeRcyLeZZ
zp_colored_print(target, const message[], any:...)
{
   static buffer[512], i, argscount
   argscount = numargs()
   
   // Send to everyone
   if (!target)
   {
      static player
      for (player = 1; player <= get_maxplayers(); player++)
      {
         // Not connected
         if (!is_user_connected(player))
            continue;
         
         // Remember changed arguments
         static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
         changedcount = 0
         
         // Replace LANG_PLAYER with player id
         for (i = 2; i < argscount; i++)
         {
            if (getarg(i) == LANG_PLAYER)
            {
               setarg(i, 0, player)
               changed[changedcount] = i
               changedcount++
            }
         }
         
         // Format message for player
         vformat(buffer, charsmax(buffer), message, 3)
         
         // Send it
         message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
         write_byte(player)
         write_string(buffer)
         message_end()
         
         // Replace back player id's with LANG_PLAYER
         for (i = 0; i < changedcount; i++)
            setarg(changed[i], 0, LANG_PLAYER)
      }
   }
   // Send to specific target
   else
   {
      // Format message for player
      vformat(buffer, charsmax(buffer), message, 3)
      
      // Send it
      message_begin(MSG_ONE, g_msgSayText, _, target)
      write_byte(target)
      write_string(buffer)
      message_end()
   }
}

public menuBank(id)
{   
      new title[100]
      
      formatex(title, 99, "[Banco \ySaldo :\r %i\w]", bankstorage[id])
      
      
      new bankMenu = menu_create(title, "menuBankHandler")
      
      menu_additem(bankMenu, "\wSacar Quantia", "1")
      menu_additem(bankMenu, "\wSacar Tudo^n", "2")
      
      menu_additem(bankMenu, "\wDepositar Quantia", "3")
      menu_additem(bankMenu, "\wDepositar Tudo^n", "4")
      
      menu_display(id, bankMenu, 0)
}
public menuBankHandler(id, menu, item)
{      
   new data[6], iName[64], access, callback
   menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
         client_cmd(id, "messagemode [Sacar]Quantia_")
      }
      case 2:
      {
         client_cmd(id, "say /sacar all")
      }
      case 3:
      {
         client_cmd(id, "messagemode [Depositar]Quantia_")
      }
      case 4:
      {
         client_cmd(id, "say /deposit all")
      }
   }
}
public cmd_depositar(id)
{
   new tempQuantia[19]
   read_args(tempQuantia[id], 20)
   remove_quotes(tempQuantia[id])
   trim(tempQuantia[id])
   
   if(tempQuantia[id] <= 0)
   {
      zp_colored_print(id, "^x04[ZP Bank]^x01 Quantia invalida.")
      return PLUGIN_HANDLED
   }
   else
   {
      client_cmd(id, "say /save %s", tempQuantia[id])
   }
   return PLUGIN_CONTINUE
}

public cmd_sacar(id)
{
   new tempQuantia[19]
   read_args(tempQuantia[id], 20)
   remove_quotes(tempQuantia[id])
   trim(tempQuantia[id])
   if(tempQuantia[id] <= 0)
   {
      zp_colored_print(id, "^x04[ZP Bank]^x01 Quantia invalida.")
      return PLUGIN_HANDLED
   }
   else
   {
      client_cmd(id, "say /sacar %s", tempQuantia[id])
   }
   return PLUGIN_CONTINUE
}

description[Pedido] Banco Simples EmptyRe: [Pedido] Banco Simples

more_horiz
vlw velhoo me ajuda la no outro topico tbm : D

description[Pedido] Banco Simples EmptyRe: [Pedido] Banco Simples

more_horiz
Mano foi mau esse e o banco errado o certo e esse.

Código:

#include <amxmodx>
#include <nvault>
#include <zombieplague>
#include <ColorChat>

#define is_valid_player(%1) (1 <= %1 <= 32)

#define CMDTARGET_OBEY_IMMUNITY (1<<0)
#define CMDTARGET_ALLOW_SELF   (1<<1)
#define CMDTARGET_ONLY_ALIVE   (1<<2)
#define CMDTARGET_NO_BOTS      (1<<3)

enum pcvar
{
   enable = 0,
   cap,
   start,
   advertise,
   deposit,
   withdraw,
   account,
   savetype,
   bot
}

new g_msgSyncHud;


new gvault, g_msgSayText, pcvars[pcvar], bankstorage[33]

public plugin_init()
{
   register_plugin("[ZP] Sub Plugin: Ultimate Bank", "1.1", "93()|29!/<, Random1");
   
   register_dictionary("zp_bank.txt")
   
   gvault = nvault_open("Zombie Bank Ultimate");
   g_msgSayText = get_user_msgid("SayText")
   
   pcvars[enable] =   register_cvar("zp_bank", "1");
   pcvars[cap] =      register_cvar("zp_bank_limit", "757");
   pcvars[start] =      register_cvar("zp_bank_blockstart", "0");
   pcvars[advertise] =   register_cvar("zp_bank_ad_delay", "275.7")
   pcvars[deposit] =   register_cvar("zp_bank_deposit", "1")
   pcvars[withdraw] =   register_cvar("zp_bank_withdraw", "1")
   pcvars[account] =   register_cvar("zp_bank_account", "1")
   pcvars[savetype] =   register_cvar("zp_bank_save_type", "1")
   pcvars[bot] =      register_cvar("zp_bank_bot_support", "1")
   
   register_clcmd("[Depositar]Quantia_", "cmd_depositar")
   register_clcmd("[Sacar]Quantia_", "cmd_sacar")
   
   if (get_pcvar_num(pcvars[cap]) > 2147483646)
   {
      set_pcvar_num(pcvars[cap], 2147483646);
      server_print("[%L] %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_LIMIT");
   }
   else if (get_pcvar_num(pcvars[cap]) < 1)
      set_pcvar_num(pcvars[cap], 1);
   
   register_clcmd("say", "handle_say");
   register_clcmd("say_team", "handle_say");
   
   g_msgSyncHud = CreateHudSyncObj();

   
   if (get_pcvar_num(pcvars[advertise]))
      set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
}

public plugin_cfg()
{
   // Plugin is disabled
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   // Get configs dir
   new cfgdir[32]
   get_configsdir(cfgdir, charsmax(cfgdir))
   
   // Execute config file (zp_rewards.cfg)
   server_cmd("exec %s/zp_bank.cfg", cfgdir)
}

public advertise_loop()
{
   if (!get_pcvar_num(pcvars[enable]) || !get_pcvar_float(pcvars[advertise]))
   {
      remove_task()
      
      return;
   }
   
   if (get_pcvar_num(pcvars[cap]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO1", get_pcvar_num(pcvars[cap]));
   
   if (get_pcvar_num(pcvars[deposit]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_DPS");
   else
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_AS");
   
   if (get_pcvar_num(pcvars[withdraw]))
      zp_colored_print(0, "^x04[%L]^x01 %L", LANG_PLAYER, "BANK_PREFIX", LANG_PLAYER, "BANK_INFO_WD");
   
   set_task(get_pcvar_float(pcvars[advertise]), "advertise_loop");
}
public plugin_end()
{
   nvault_close(gvault);
}
public handle_say(id, key)
{
   if (!get_pcvar_num(pcvars[enable]))
      return PLUGIN_CONTINUE;
   
   new text[70], arg1[32], arg2[32], arg3[6];
   read_args(text, sizeof(text) - 1);
   remove_quotes(text);
   arg1[0] = '^0';
   arg2[0] = '^0';
   arg3[0] = '^0';
   parse(text, arg1, sizeof(arg1) - 1, arg2, sizeof(arg2) - 1, arg3, sizeof(arg3) - 1);

   //strip forward slash if present
   if (equali(arg1, "/", 1))
      format(arg1, 31, arg1[1]);
   
   // if the chat line has more than 2 words, we're not interested at all
   if (arg3[0])
      return PLUGIN_CONTINUE;
   
   if (equali(arg1, "deposit", 7) || equali(arg1, "save", 4) || equali(arg1, "store", 5) || equali(arg1, "depositar", 6))
   {
      if (!get_pcvar_num(pcvars[deposit]))
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_DNA");
         
         return PLUGIN_CONTINUE;
      }
      
      if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
      {
         new amount = str_to_num(arg2);
         if (amount <= 0)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
            
            return PLUGIN_CONTINUE;
         }
         store_packs(id, amount);
         
         return PLUGIN_HANDLED;
      }
      else if (equali(arg2, "all"))
      {
         store_packs(id, 0);
         
         return PLUGIN_HANDLED;
      }
      else if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_DPS");
         
         return PLUGIN_CONTINUE;
      }
      
      return PLUGIN_CONTINUE;
   }
   else if (equali(arg1, "withdraw", 8) || equali(arg1, "take", 4) || equali(arg1, "retrieve", 8) || equali(arg1, "sacar", 8) || equali(arg1, "saque", 8))
   {
      if (!get_pcvar_num(pcvars[withdraw]))
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_WNA");
         
         return PLUGIN_CONTINUE;
      }
      
      if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
      {
         new amount = str_to_num(arg2);
         if (amount <= 0)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_VGZ");
            
            return PLUGIN_CONTINUE;
         }
         take_packs(id, amount);
         
         return PLUGIN_HANDLED;
      }
      else if (equali(arg2, "all", 3) || equali(arg2, "everything", 10))
      {
         take_packs(id, 0);
         
         return PLUGIN_HANDLED;
      }
      else if (!arg2[0])
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_HELP_WD");
         
         return PLUGIN_CONTINUE;
      }
      
      return PLUGIN_CONTINUE;
   }
   else if (equali(arg1, "packs", 6) || equali(arg1, "account", 7) || equali(arg1, "bank", 4) || equali(arg1, "banco", 5))
   {
      if (!arg2[0])
      {
         menuBank(id)
         
         return PLUGIN_HANDLED;
      }
      else
      {
         new id2 = cmd_target(id, arg2, 2);
         if (!id2)
            return PLUGIN_CONTINUE;
         
         static id2name[32];
         get_user_name(id2, id2name, 31);
         zp_colored_print(id, "^x04[Banco ZP]^x01 O jogador^x03 %s^x01 tem^x03 %d^x01 ammo packs depositados em sua conta.", id2name, bankstorage[id2]);
         
         return PLUGIN_HANDLED;
      }
      
      return PLUGIN_CONTINUE;
   }
   
   return PLUGIN_CONTINUE;
}

//public zp_user_disconnect_pre(id)
public client_disconnect(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   if (is_user_bot(id) && !get_pcvar_num(pcvars[bot]) || !zp_get_user_ammo_packs(id))
      return;
   else
      store_packs(id, 0);
   
   if (bankstorage[id] > 0)
      save_data(id);
}

//public zp_user_connect_post(id)
public client_putinserver(id)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   bankstorage[id] = 0; //clear residual before loading
   retrieve_data(id);
   if (!get_pcvar_num(pcvars[withdraw]))
   {
      if (!bankstorage[id] || is_user_bot(id) && !get_pcvar_num(pcvars[bot]))
         return;
      
      take_packs(id, 0)
   }
}

store_packs(id, amnt)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   new temp = zp_get_user_ammo_packs(id);
   new limit = get_pcvar_num(pcvars[cap]);
   new fill = limit - bankstorage[id];
   
   if (!temp)
   {
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NAPTD")
      
      return;
   }
   
   if (amnt == 0)
   {
      if (bankstorage[id] + temp <= limit)
      {
         bankstorage[id] += temp;
         ColorChat(id, GREEN, "[Banco ZP]^1 Depositados^3 %i^1 Ammopacks. Voce tem um total de^3 %i^1 Ammopacks.", temp, bankstorage[id])
         zp_set_user_ammo_packs(id, 0);
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
         if (!fill)
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
            
            return;
         }
         else
         {
            bankstorage[id] += fill
            zp_set_user_ammo_packs(id, temp - fill);
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PADPST", fill);
         }
      }
      checkmax(id);
   }
   else if (amnt > 0)
   {      
      if (temp >= amnt)
      {         
         if (bankstorage[id] + amnt <= limit)
         {
            bankstorage[id] += amnt
            zp_set_user_ammo_packs(id, temp - amnt);
            ColorChat(id, GREEN, "[Banco ZP]^1 Depositados^3 %i^1 Ammopacks. Voce tem um total de^3 %i^1 Ammopacks.", amnt, bankstorage[id])
         }
         else
         {
            zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_CPCT", limit);
            if (!fill)
            {
               zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NDPST");
               
               return;
            }
            else
            {
               bankstorage[id] += fill
               zp_set_user_ammo_packs(id, temp - fill);
               zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_PDPST", fill, amnt);
            }
         }
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASTDG", amnt, temp);
         
         return;
      }
   }
}

take_packs(id, amnt)
{
   if (!get_pcvar_num(pcvars[enable]))
      return;
   
   if (!bankstorage[id])
   {
      zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_NPIA")
      
      return;
   }
   
   if (amnt == 0)
   {
      zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + bankstorage[id])
      ColorChat(id, GREEN, "[Panic Bank]^1 Voce Sacou^3 %i^1 Ammopacks.", bankstorage[id])
      bankstorage[id] = 0;
   }
   else if (amnt > 0)
   {
      if (bankstorage[id] >= amnt)
      {
         zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amnt);
         bankstorage[id] -= amnt;
         ColorChat(id, GREEN, "[Panic Bank]^1 Voce Sacou^3 %i^1 Ammopacks.", amnt)
      }
      else
      {
         zp_colored_print(id, "^x04[%L]^x01 %L", id, "BANK_PREFIX", id, "BANK_ASGB", amnt, bankstorage[id]);
         
         return;
      }
   }
}


save_data(id)
{
   new vaultkey[40], vaultdata[13];
   
   switch (get_pcvar_num(pcvars[savetype]))
   {
      case 1:
      {
         new AuthID[33];
         get_user_authid(id, AuthID, 32);
         
         formatex(vaultkey, 39, "__%s__", AuthID);
      }
      case 2:
      {
         new IP[33];
         get_user_ip(id, IP, 32);
         
         formatex(vaultkey, 39, "__%s__", IP);
      }
      case 3:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name);
      }
   }
   formatex(vaultdata, 12, "%i", bankstorage[id]);
   nvault_set(gvault, vaultkey, vaultdata);
}

retrieve_data(id)
{
   new vaultkey[40], vaultdata[13];
   
   switch (get_pcvar_num(pcvars[savetype]))
   {
      case 1:
      {
         new AuthID[33];
         get_user_authid(id, AuthID, 32);
         
         formatex(vaultkey, 39, "__%s__", AuthID);
      }
      case 2:
      {
         new IP[33];
         get_user_ip(id, IP, 32);
         
         formatex(vaultkey, 39, "__%s__", IP);
      }
      case 3:
      {
         new Name[33];
         get_user_name(id, Name, 32);
         
         formatex(vaultkey, 39, "__%s__", Name);
      }
   }
   nvault_get(gvault, vaultkey, vaultdata, 12);
   
   bankstorage[id] = str_to_num(vaultdata);
   checkmax(id);   
   
   // If they have an account don't allow zombie mod to give them 5 ammo packs at beggining
   if (get_pcvar_num(pcvars[start]) && bankstorage[id] > 0)
      zp_set_user_ammo_packs(id, 0);
}

checkmax(id)
{
   if (bankstorage[id] > get_pcvar_num(pcvars[cap]))
      bankstorage[id] = get_pcvar_num(pcvars[cap]);
   else if (bankstorage[id] < 0)
      bankstorage[id] = 0;
}

// Colored chat print by MeRcyLeZZ
zp_colored_print(target, const message[], any:...)
{
   static buffer[512], i, argscount
   argscount = numargs()
   
   // Send to everyone
   if (!target)
   {
      static player
      for (player = 1; player <= get_maxplayers(); player++)
      {
         // Not connected
         if (!is_user_connected(player))
            continue;
         
         // Remember changed arguments
         static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
         changedcount = 0
         
         // Replace LANG_PLAYER with player id
         for (i = 2; i < argscount; i++)
         {
            if (getarg(i) == LANG_PLAYER)
            {
               setarg(i, 0, player)
               changed[changedcount] = i
               changedcount++
            }
         }
         
         // Format message for player
         vformat(buffer, charsmax(buffer), message, 3)
         
         // Send it
         message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
         write_byte(player)
         write_string(buffer)
         message_end()
         
         // Replace back player id's with LANG_PLAYER
         for (i = 0; i < changedcount; i++)
            setarg(changed[i], 0, LANG_PLAYER)
      }
   }
   // Send to specific target
   else
   {
      // Format message for player
      vformat(buffer, charsmax(buffer), message, 3)
      
      // Send it
      message_begin(MSG_ONE, g_msgSayText, _, target)
      write_byte(target)
      write_string(buffer)
      message_end()
   }
}
// Stock from AmxMisc
stock get_configsdir(name[], len)
   return get_localinfo("amxx_configsdir", name, len);

stock cmd_target(id,const arg[],flags = CMDTARGET_OBEY_IMMUNITY)
{
   new player = find_player("bl",arg);
   if (player)
   {
      if ( player != find_player("blj",arg) )
      {
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("There are more clients matching to your argument"));
#else
         console_print(id,"%L",id,"MORE_CL_MATCHT");
#endif
         return 0;
      }
   }
   else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] )
   {
      player = find_player("k",str_to_num(arg[1]));
   }
   if (!player)
   {
#if defined AMXMOD_BCOMPAT
      console_print(id, SIMPLE_T("Client with that name or userid not found"));
#else
      console_print(id,"%L",id,"CL_NOT_FOUND");
#endif
      return 0;
   }
   if (flags & CMDTARGET_OBEY_IMMUNITY)
   {
      if ((get_user_flags(player) & ADMIN_IMMUNITY) &&
         ((flags & CMDTARGET_ALLOW_SELF) ? (id != player) : true) )
      {
         new imname[32];
         get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname);
#else
         console_print(id,"%L",id,"CLIENT_IMM",imname);
#endif
         return 0;
      }
   }
   if (flags & CMDTARGET_ONLY_ALIVE)
   {
      if (!is_user_alive(player))
      {
         new imname[32];
         get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname);
#else
         console_print(id,"%L",id,"CANT_PERF_DEAD",imname);
#endif
         return 0;
      }
   }
   if (flags & CMDTARGET_NO_BOTS)
   {
      if (is_user_bot(player))
      {
         new imname[32];
         get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
         console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname);
#else
         console_print(id,"%L",id,"CANT_PERF_BOT",imname);
#endif
         return 0;
      }
   }
   return player;
}

public menuBank(id)
{   
      new title[100]
      
      formatex(title, 99, "[Banco \ySaldo :\r %i\w]", bankstorage[id])
      
      
      new bankMenu = menu_create(title, "menuBankHandler")
      
      menu_additem(bankMenu, "\wSacar Quantia", "1")
      menu_additem(bankMenu, "\wSacar Tudo^n", "2")
      
      menu_additem(bankMenu, "\wDepositar Quantia", "3")
      menu_additem(bankMenu, "\wDepositar Tudo^n", "4")
      
      menu_display(id, bankMenu, 0)
}
public menuBankHandler(id, menu, item)
{      
   new data[6], iName[64], access, callback
   menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
         client_cmd(id, "messagemode [Sacar]Quantia_")
      }
      case 2:
      {
         client_cmd(id, "say /sacar all")
      }
      case 3:
      {
         client_cmd(id, "messagemode [Depositar]Quantia_")
      }
      case 4:
      {
         client_cmd(id, "say /deposit all")
      }
   }
}
public cmd_depositar(id)
{
   new tempQuantia[19]
   read_args(tempQuantia[id], 20)
   remove_quotes(tempQuantia[id])
   trim(tempQuantia[id])
   
   if(tempQuantia[id] <= 0)
   {
      zp_colored_print(id, "^x04[ZP Bank]^x01 Quantia invalida.")
      return PLUGIN_HANDLED
   }
   else
   {
      client_cmd(id, "say /save %s", tempQuantia[id])
   }
   return PLUGIN_CONTINUE
}

public cmd_sacar(id)
{
   new tempQuantia[19]
   read_args(tempQuantia[id], 20)
   remove_quotes(tempQuantia[id])
   trim(tempQuantia[id])
   if(tempQuantia[id] <= 0)
   {
      zp_colored_print(id, "^x04[ZP Bank]^x01 Quantia invalida.")
      return PLUGIN_HANDLED
   }
   else
   {
      client_cmd(id, "say /sacar %s", tempQuantia[id])
   }
   return PLUGIN_CONTINUE
}

description[Pedido] Banco Simples EmptyRe: [Pedido] Banco Simples

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder