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 [Resolvido] Raciocínio Empty [Resolvido] Raciocínio

more_horiz
Foi descoberto um bug no banco, e esse bug precisa de um raciocínio igual do "Albert Einstein"

Vamos lá:
Bug 1: Vamos supor, eu tenho 100 APs no banco, e sacado eu tenho 10, quando for sacar pode dar erro. Ou seja, Se a quantia no banco for maior que os ammo packs sacados, sera igual a quantia invalida.
Bug 2: Tenho 100 APs no banco, e sacado eu tenho 10, quando for depositar pode dar erro. Ou seja, Se a quantia no banco for maior que os ammo packs sacados, sera igual a quantia invalida.

[RESOLVIDO]

Thanks Spriite


Última edição por guh._.rds em 25/7/2012, 3:16 pm, editado 2 vez(es)

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
Guh da uma olhada nessa Sma de Banco .Axo que foi o Leozinho que posto pro Douglasf


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] Addon: Basic Bank", "1.5", "author");
 
  register_dictionary("zp_bank.txt")
 
  gvault = nvault_open("Banco Basico");
  g_msgSayText = get_user_msgid("SayText")
 
  pcvars[enable] =  register_cvar("zp_bank", "1");
  pcvars[cap] =      register_cvar("zp_bank_limit", "3500");
  pcvars[start] =      register_cvar("zp_bank_blockstart", "0");
  pcvars[advertise] =  register_cvar("zp_bank_ad_delay", "250.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]^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]^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]^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, "[Banco]^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, "[Banco]^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[Banco]^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[Banco]^x01 Quantia invalida.")
      return PLUGIN_HANDLED
  }
  else
  {
      client_cmd(id, "say /sacar %s", tempQuantia[id])
  }
  return PLUGIN_CONTINUE
 
}



> ve se tem o que vc prescisa :)

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
Fiquei mais cafuso =S

Sma que Rotam passou

Código:

if (bankstorage[id] >= amnt)
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amnt);
bankstorage[id] -= amnt;
ColorChat(id, GREEN, "[Banco]^1 Voce Sacou^3 %i^1 Ammopacks.", amnt)


Sma do Registro + Banco

Código:

if(want > have)
{
client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP_BANK", want)
show_menu2(id)
         
if(containi(amout[id], " ") == -1)
{
show_menu2(id)
client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP_BANK", want)
}

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
k
malz ... So tentei ajudar...

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
Movido para Área de Scripting (Dúvidas).

@TOPIC

guh, você postar a .sma inteira do seu banco (em CODE por favor) para eu dar uma olhada nisso. E você pode explicar melhor sobre o que você quer porque eu não consegui entender.

Obrigado.

PS: Estou na numa LAN, porque eu estou visitando meu pai. Não dá para abrir o WinRAR porque não tem nessa LAN House. '--

Última edição por AnDroidEL em 21/7/2012, 11:54 pm, editado 1 vez(es)

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
guh, tenta isto:

Código:

if(containi (want[id] < aps[want]) )
{
client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP", want)
show_menu2(id)
}


Código:

if(containi (want[id] > have[want]) )
{
client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP_BANK", want)
show_menu2(id)
       
if(containi(amout[id], " ") == -1)
{
show_menu2(id)
client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP_BANK", want)
}


Tenta isto, se der algum erro na compilação, poste aqui, agora se o bug ainda tiver, troque o aps[want] e have[want] POR aps[id] e have[id].
Zplague12

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
Nada....
Nenhum "Albert Einstein" por ai não???

Quem não é Scripter não se 'preucupe' a bagaça tem mais a ver com raciocinio.. ajudem...

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
guh._.rds escreveu:
Nada....
Nenhum "Albert Einstein" por ai não???

Quem não é Scripter não se 'preucupe' a bagaça tem mais a ver com raciocinio.. ajudem...

vixee.... pensei q vc ja tinha resolvido o BUG ...

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
>= Maior ou Igual, pelo que entendi seria assim, =x mais n vo postar sma aqui e tal;

Como ele disse lá em cima, conforme os bug, se vc sacar oq vc n tem , vai ser contia invalida; ou seja ela tenq ser igual oq vc sacou ou maior..

Esse foi meu raciocinio..

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
Pra alguém que disse ter feito algo mais avançado do que meu plugin do bank essa parece ser uma dúvida meio básica...

Código:


public cmdtakeamout(id)
{
    //new amout[33][100] //Pra que criar uma nova variável com essa quantia de células a cada vez que a função for iniciada?
    new amout[30] //Isso já é mais do que o suficiente!
    read_args(amout, charsmax(amout))
    remove_quotes(amout)
     
    if(!valid_ammt(amout, strlen(amout)))
    {
        // O valor digitado contém caracteres que não são números!
        return PLUGIN_HANDLED;
    }
   
    new data1[30]
    fvault_get_data("zp_rba_bank", g_name[id], data1, charsmax(data1))
   
    new want = str_to_num(amout)
    new have = str_to_num(data1)
     
    if(want > have)
    {
        // O valor digitado é maior do que o que ele possui guardado!
        return PLUGIN_HANDLED;
    }
    // Damos a quantia desejada ao player e descontamos no saldo dele.
    zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + want)
   
    num_to_str(have - want, amout, charsmax(amout)); // A variável amout[] já não está sendo mais usada, por isso podemos reutilizá-la.
    fvault_set_data("zp_rba_bank", g_name[id], amout);
    return PLUGIN_HANDLED;
}

public cmdsaveamout(id)
{
    //new amout[33][100] //Pra que criar uma nova variável com essa quantia de células a cada vez que a função for iniciada?
    new amout[30] //Isso já é mais do que o suficiente!
    read_args(amout, charsmax(amout))
    remove_quotes(amout)
   
    if(!valid_ammt(amout, strlen(amout)))
    {
        // O valor digitado contém caracteres que não são números!
        return PLUGIN_HANDLED;
    }
   
    new want = str_to_num(amout);
    new aps = zp_get_user_ammo_packs(id);
   
    if(want > aps)
    {
        // Quantia a ser depositada é maior do que o player possui sacado!
        return PLUGIN_HANDLED;
    }
    // Guardamos o valor, e descontamos os aps.
    zp_set_user_ammo_packs(id, aps - want)
   
    num_to_str(aps + want, amout, charsmax(amout)); // A variável amout[] já não está sendo mais usada, por isso podemos reutilizá-la.
    fvault_set_data("zp_rba_bank", g_name[id], amout);
    return PLUGIN_HANDLED;
}

bool:valid_ammt(const ammt[], len)
{
    static const valid_chars[][] = { "0" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" };
    static i, a, valids;
   
    valids = 0;
   
    for(i = 0; i < len; i++)
    {
        for(a = 0; a < sizeof(valid_chars); a++)
        {
            if(ammt[i] == valid_chars[a][0])
            {
                valids++;
                break;
            }
        }
    }
   
    if(valids != len)
        return false;
    return true;
}


Última edição por SpriiTe em 23/7/2012, 11:49 pm, editado 2 vez(es)

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
SpriiTe escreveu:
Pra alguém que disse ter feito algo mais avançado do que meu plugin do bank essa parece ser uma dúvida meio básica...

Código:


public cmdtakeamout(id)
{
    //new amout[33][100] //Pra que criar uma nova varial com essa quantia de células a cada vez que a função for iniciada?
    new amout[30] //Isso já é mais do que o suficiente!
    read_args(amout, charsmax(amout))
    remove_quotes(amout)
     
    if(!valid_ammt(amout, strlen(amout)))
    {
        // O valor digitado contém caracteres que não são números!
        return PLUGIN_HANDLED;
    }
   
    new data1[30]
    fvault_get_data("zp_rba_bank", g_name[id], data1, charsmax(data1))
   
    new want = str_to_num(amout)
    new have = str_to_num(data1)
     
    if(want > have)
    {
        // O valor digitado é maior do que o que ele possui guardado!
        return PLUGIN_HANDLED;
    }
    // Damos a quantia desejada ao player e descontamos no saldo dele.
    zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + want)
   
    num_to_str(have - want, amout, charsmax(amout)); // A variavel amout[] já não está sendo mais usada, por isso podemos reutiliza-la.
    fvault_set_data("zp_rba_bank", g_name[id], amout);
    return PLUGIN_HANDLED;
}

public cmdsaveamout(id)
{
    //new amout[33][100] //Pra que criar uma nova varial com essa quantia de células a cada vez que a função for iniciada?
    new amout[30] //Isso já é mais do que o suficiente!
    read_args(amout, charsmax(amout))
    remove_quotes(amout)
   
    if(!valid_ammt(amout, strlen(amout)))
    {
        // O valor digitado contém caracteres que não são números!
        return PLUGIN_HANDLED;
    }
   
    new want = str_to_num(amout);
    new aps = zp_get_user_ammo_packs(id);
   
    if(want > aps)
    {
        // Quantia a ser depositada é maior do que o player possui sacado!
        return PLUGIN_HANDLED;
    }
    // Guardamos o valor, e descontamos os aps.
    zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + want)
   
    num_to_str(aps + want, amout, charsmax(amout)); // A variavel amout[] já não está sendo mais usada, por isso podemos reutiliza-la.
    fvault_set_data("zp_rba_bank", g_name[id], amout);
    return PLUGIN_HANDLED;
}

bool:valid_ammt(const ammt[], len)
{
    static const valid_chars[][] = { "0" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" };
    static i, a, valids;
   
    valids = 0;
   
    for(i = 0; i < len; i++)
    {
        for(a = 0; a < sizeof(valid_chars); a++)
        {
            if(ammt[i] == valid_chars[a][0])
            {
                valids++;
                break;
            }
        }
    }
   
    if(valids != len)
        return false;
    return true;
}



Eis o Eintens dos plugins o.O

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
SpriiTe escreveu:
Pra alguém que disse ter feito algo mais avançado do que meu plugin do bank essa parece ser uma dúvida meio básica...


O avançado seria o conteudo(Exemplo Trocar Login e Trocar Senha), e não certamente o banco...(Certamente não há nenhum banco igual ao seu, é o melhor até agora, sem bugs pelo que sei.)
Eu comecei um banco do 0, ficaria mais facil pra mim. E tbm eu não sou lá um scripter avaçado, já q não sei Pawn Basico e C++ Basico.
Em alguns pluguins que fiz ou editei tive ajuda do meu irmao, ele sim sabe Pawn e C++ Avançado, mas ele não sabe mecher com plugins.

@OBS: Aprendi um pouco de Pawn e C++

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
guh, você conseguiu resolver o bug ou vai criar um novo?

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

more_horiz
Spriite Resolveu e ja ajudo aqui com umas novas funções =), mas tbm decidi criar um novo.
Depois eu posto...

@OBS: Vai vir coisas novas

description [Resolvido] Raciocínio EmptyRe: [Resolvido] Raciocínio

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