Raised This Month: $ Target: $400
 0% 

[ESP][AYUDA] Banco ZP


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
elpapadeloshelados
BANNED
Join Date: Aug 2010
Old 08-20-2010 , 15:04   [ESP][AYUDA] Banco ZP
Reply With Quote #1

Buenas, mi problema es que desde que tengo server ZP eh tenido un gran problema, y es con el banco. Por ejemplo, yo deposito 1000 ammopacks y se supone que solamente se tienen que guardar a mi, pero no, se le guardan a todos los jugadores y si cambio mapa o cierro y abro de nuevo, todos empiezan con el banco en 5000 ammo packs o las que sea que yo tuviera, se las pueden gastar todas pero cuando se cambia mapa otra ves lo mismo, todos con 5000 ammo packs. En resumen, necesito poner que cuando uno deposite solo se le deposite a uno mismo y se queden guardados si se cambia de mapa o se desconecta, y cuando empiezes de nuevo tengas las que tenias antes, osea las que has depositado sin que se borren, aqui les voy a dejar el .sma del banco que yo utilizo:
Code:
// ZP Bank - allows saving of ammo packs 
/*    cvars 
zp_bank 1                //<0/1> set whether plugin enabled or not 
zp_bank_limit 1000000    //maximium storage capacity of each person's account 
zp_bank_blockstart 1    //<0/1> set whether bank blocks zombie plague from giving the initial 5 ammo packs on start if user has an account 
*/ 
#include <amxmodx> 
#include <amxmisc> 
#include <nvault> 
#include <fakemeta> 
#include <zombieplague> 
static const version[] = "0.3"; 
static const plugin[] = "ZP Bank"; 
enum pcvar 
{ 
    enable = 0, 
    cap, 
    start 
} 
new pcvars[pcvar]; 
new bankstorage[33]; 
new gvault, thinkobj; 
public plugin_init() 
{ 
    register_plugin(plugin, version, "Random1"); 
 
    gvault = nvault_open("Zombie Bank"); 
 
    pcvars[enable] =            register_cvar("zp_bank", "1"); 
    pcvars[cap] =                register_cvar("zp_bank_limit", "5000"); 
    pcvars[start] =                register_cvar("zp_bank_blockstart", "0"); 
 
    if ( get_pcvar_num(pcvars[cap]) > 2147483646 ) 
    { 
        set_pcvar_num(pcvars[cap], 2147483646); 
        server_print("[%s] Due to a 32 bit restriction in perl zp_ammo_limit reset based on restriction", plugin); 
    } 
 
    register_clcmd("say", "handle_say"); 
    register_clcmd("say_team", "handle_say"); 
 
    thinkobj = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")); 
    if ( pev_valid(thinkobj) ) 
    { 
        set_pev(thinkobj, pev_classname, "advertisement_loop"); 
        set_pev(thinkobj, pev_nextthink, get_gametime() + 240.0); 
        register_forward(FM_Think, "fourmin_think"); 
    } 
} 
public fourmin_think(ent) 
{ 
    if ( ent != thinkobj ) return FMRES_IGNORED; 
 
    if ( !get_pcvar_num(pcvars[enable]) ) return FMRES_IGNORED; 
 
    client_print(0, print_chat, "[%s]Activado. %d es el limite de almacenamiento", plugin, get_pcvar_num(pcvars[cap])); 
    client_print(0, print_chat, "[%s] Puedes guardar tus ammo packs en el banco escribiendo ^"deposit <amount>^".", plugin); 
    client_print(0, print_chat, "[%s] Para retirar tus ammo packs del banco escribe ^"withdraw <amount>^"", plugin); 
 
    set_pev(ent, pev_nextthink, get_gametime() + 240.0); 
 
    return FMRES_HANDLED;     
} 
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); 
    //dbg_log("cmd_say() arg1:#%s# arg2:#%s# arg3:#%s#", arg1, arg2, arg3); 
    // if the chat line has more than 2 words, we're not interested at all 
    if (arg3[0] == 0) 
    { 
        //strip forward slash if present 
        if ( equali(arg1, "/", 1) ) format(arg1, 31, arg1[1]); 
 
        if ( equali(arg1, "deposit", 7) || equali(arg1, "send", 4) || equali(arg1, "store", 5) ) 
        { 
            if ( isdigit(arg2[0]) || (arg2[0] == '-' && isdigit(arg2[1])) )  
            { 
                new value = str_to_num(arg2); 
                store_cash(id, value); 
                return PLUGIN_HANDLED; 
            } 
            else if ( equali(arg2, "all") ) 
            { 
                store_cash(id, -1); 
                return PLUGIN_HANDLED; 
            }                 
            else if ( arg2[0] == 0 ) 
                client_print(id, print_chat, "[%s] Para depositar los ammo packs escribir say deposit <amount to deposit>", plugin); 
 
            return PLUGIN_CONTINUE; 
        } 
        else if ( equali(arg1, "withdraw", 8) || equali(arg1, "take", 4) || equali(arg1, "retrieve", 8) ) 
        { 
            if ( isdigit(arg2[0]) || (arg2[0] == '-' && isdigit(arg2[1])) )  
            { 
                new value = str_to_num(arg2); 
                take_cash(id, value); 
                return PLUGIN_HANDLED; 
            } 
            else if ( equali(arg2, "all") ) 
            { 
                take_cash(id, -1); 
                return PLUGIN_HANDLED; 
            } 
            else if ( arg2[0] == 0 ) 
                client_print(id, print_chat, "[%s] Retirar ammo packs del banco escribir say withdraw <amount to withdraw>", plugin); 
 
            return PLUGIN_CONTINUE; 
        } 
        else if ( equali(arg1, "mybank", 6) || equali(arg1, "account", 7) || equali(arg1, "bank", 4) ) 
        { 
            if ( arg2[0] == 0 ) { 
                client_print(id, print_chat, "[%s] Actualmente usted tiene %d ammo packs en el banco",plugin, bankstorage[id]); 
                return PLUGIN_HANDLED; 
            } 
            else { 
                new player = cmd_target(id,arg2,2); 
                if ( !player ) return PLUGIN_CONTINUE; 
                client_print(id, print_chat, "[%s] %s tiene %d ammo packs", plugin, arg2, bankstorage[player]); 
                return PLUGIN_HANDLED; 
            } 
        } 
    } 
    else if ( equali( arg1, "donate", 6 ) ) 
    { 
        give_cmd(id, arg2, arg3); 
        return PLUGIN_HANDLED; 
    } 
    return PLUGIN_CONTINUE; 
} 
give_cmd(id, target[], amnt[]) 
{ 
    new temp = str_to_num(amnt); 
    if ( temp < 0 ) 
    { 
        client_print(id, print_chat, "[%s] La ^"amount^" argumento pasado es negativo, puede que quiera enganar", plugin ); 
        return; 
    } 
    new player = cmd_target(id, target, 8); 
    if ( !player ) return; 
 
    new temp2 = bankstorage[id] + zp_get_user_ammo_packs(id); 
    if ( temp > temp2 ) 
    { 
        client_print(id, print_chat, "[%s] Usted no tiene suficiente ammo packs para donar, solo tienes %d de %d especificando",plugin, 
            temp2, temp); 
 
        return; 
    } 
    static playername[32], givename[32]; 
    get_user_name(player, playername, 31); 
    get_user_name(id, givename, 31); 
    client_print(id, print_chat, "[%s] Usted a donado %d ammo packs a %s", plugin, temp, playername); 
    client_print(player, print_chat, "[%s] %s donado %d ammo packs a usted", plugin, givename, temp); 
    bankstorage[player] += temp; 
    if ( bankstorage[id] > temp ) bankstorage[id] -= temp; 
    else 
    { 
        temp -= bankstorage[id]; 
        bankstorage[id] = 0; 
        zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - temp); 
    } 
} 
//public zp_user_disconnect_pre(id) 
public client_disconnect(id) 
    if ( bankstorage[id] > 0 ) save_data(id); 
//public zp_user_connect_post(id) 
public client_connect(id) 
{     
    bankstorage[id] = 0;    //clear residual before loading 
    retrieve_data(id); 
} 
store_cash(id, amnt) 
{ 
    if ( !get_pcvar_num(pcvars[enable]) ) return; 
 
    if ( amnt == -1 ) 
    { 
        bankstorage[id] += zp_get_user_ammo_packs(id); 
        zp_set_user_ammo_packs(id, 0); 
        checkmax(id); 
    } 
    else if ( amnt > 0 ) 
    {         
        new temp = zp_get_user_ammo_packs(id); 
        new limit = get_pcvar_num(pcvars[cap]); 
        if ( temp >= amnt ) 
        {             
            if ( bankstorage[id] + amnt <= limit ) 
            { 
                bankstorage[id] += amnt 
                zp_set_user_ammo_packs(id, temp - amnt); 
            } 
            else 
            { 
                new overflow = bankstorage[id] + amnt - limit; 
                bankstorage[id] = limit; 
                zp_set_user_ammo_packs(id, temp - amnt + overflow); 
                client_print(id, print_chat, "[%s] Su cuenta bancaria ha llegado a su capacidad de maxima %d", plugin, limit); 
                client_print(id, print_chat, "[%s] solo %d de la %d tu especificaste para depositar ha sido depositado", plugin, 
                amnt - overflow, amnt); 
            } 
        } 
        else 
            client_print(id, print_chat, "[%s] Cantidad especificada(%d) actual es mayor que ammo pack cuenta(%d)", plugin, 
            amnt, temp);             
    } 
    else 
        take_cash(id, -amnt); 
} 
take_cash(id, amnt) 
{ 
    if ( !get_pcvar_num(pcvars[enable]) ) return; 
 
    if ( amnt == 0 ) return;    //otherwise a non terminal loop is possible 
 
    if ( amnt == -1 ) 
    { 
        zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 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; 
        } 
        else { 
            client_print(id, print_chat, "[%s] Cuenta especifica(%d) es mayor que en el banco(%d)", plugin, 
            amnt, bankstorage[id]);         
        }     
    } 
    else store_cash(id, -amnt); 
} 
save_data(id) 
{ 
    new AuthID[35]; 
    get_user_authid(id,AuthID,34); 
    new vaultkey[40],vaultdata[13]; 
 
    formatex( vaultkey, 39, "__%s__", AuthID); 
    formatex( vaultdata, 12, "%i", bankstorage[id] ); 
    nvault_set(gvault, vaultkey, vaultdata);  
} 
retrieve_data(id) 
{ 
    new AuthID[35];  
    get_user_authid(id,AuthID,34);  
    new vaultkey[40], vaultdata[13];  
 
    format(vaultkey, 39, "__%s__", AuthID); 
    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; 
}
Muchisimas gracias, recuerden que es para que las ammo se le guarden a uno mismo, osea un banco para cada uno, y que no se borren al cambiar de mapa o desconectarse. Gracias!
elpapadeloshelados is offline
lucas_7_94
Leche Loco
Join Date: Mar 2009
Location: Argentina
Old 08-20-2010 , 15:23   Re: [ESP][AYUDA] Banco ZP
Reply With Quote #2

[ES]

1 _ Tiene que estar este post en ingles .
2 _ Para postear en espaņol , postea en Others con sus respectivas reglas.
__________________
ATWWMH - MiniDuels
Madness is like gravity, just need a little push.
lucas_7_94 is offline
Send a message via Skype™ to lucas_7_94
Rhyme
Member
Join Date: Aug 2010
Location: Russia (Moscow)
Old 08-20-2010 , 15:23   Re: [ESP][AYUDA] Banco ZP
Reply With Quote #3

please english, and add your plugin normal and not in line
Rhyme is offline
Send a message via ICQ to Rhyme Send a message via Skype™ to Rhyme
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 21:53.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode