Русское сообщество по скриптингу

Ограничение банка | jbe_bank

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Ограничение банка | jbe_bank

Сообщение Graviti » 13 ноя 2018, 23:15

Всем привет. Столкнулся с проблемой. Есть у нас сумма. Макс кол-во суммы 6000, если у User1 будет 6000 и ему переведут еще любое кол-во денег. Ограничение пропадает. Как сделать что-бы если у игрока 6000, нельзя было, что-то отправлять.
Код: Выделить всё
#pragma semicolon 1
#pragma ctrlchar '\'

new g_LoadFile[81];
new 
szReg[33];
new 
szAuth[33];
new 
szMoney[33];
new 
szInvalidPassword[33];
new 
szTransferMoney[33];
new 
g_Cvar[4];

replace_all(String:string[], lenString:what[], String:with[])
{
    new 
pos 0;
    new 
var1 contain(stringwhat);
    
pos var1;
    if (
var1 == -1)
    {
        return 
0;
    }
    new 
total 0;
    new 
with_len strlen(with);
    new 
diff strlen(what) - with_len;
    new 
total_len strlen(string);
    new 
temp_pos 0;
    while (
replace(string[pos], len poswhatwith))
    {
        
total++;
        
pos with_len pos;
        
total_len -= diff;
        if (
pos >= total_len)
        {
            return 
total;
        }
        else
        {
            
temp_pos contain(string[pos], what);
            if (
temp_pos == -1)
            {
                return 
total;
            }
            else
            {
                
pos temp_pos pos;
            }
            return 
total;
        }
        return 
total;
    }
    return 
total;
}

get_configsdir(String:name[], len)
{
    return 
get_localinfo("amxx_configsdir"namelen);
}

public 
plugin_init()
{
    
register_plugin("[DR]Bank""2.0""Crash94");
    
register_clcmd("say /bank""BankMenu", -1"", -1);
    
register_clcmd("say_team /bank""BankMenu", -1"", -1);
    
register_clcmd("auth_password""AuthPlayer", -1"", -1);
    
register_clcmd("make_amount""MakeMoney", -1"", -1);
    
register_clcmd("withdraw_amount""WithdrawMoney", -1"", -1);
    
register_clcmd("reg_password""RegPlayer", -1"", -1);
    
register_clcmd("edit_password""EditPassword", -1"", -1);
    
register_clcmd("transfer_amount""TransferAmount", -1"", -1);
    
g_Cvar[1] = register_cvar("dr_bank_invalid_password""3"00.00);
    
g_Cvar[2] = register_cvar("dr_bank_limit_player""4000"00.00);
    
g_Cvar[3] = register_cvar("dr_bank_limit_vip""6000"00.00);
    return 
0;
}

public 
client_disconnect(id)
{
    
szReg[id] = 0;
    
szAuth[id] = 0;
    
szMoney[id] = 0;
    
szInvalidPassword[id] = 0;
    
szTransferMoney[id] = 0;
    return 
0;
}

public 
plugin_cfg()
{
    
get_configsdir(g_LoadFile81);
    
format(g_LoadFile80"%s/dr_bank.ini"g_LoadFile);
    return 
0;
}

public 
client_connect(id)
{
    
set_task(2.00"CheckPlayer"id""0""0);
    return 
0;
}

public 
CheckPlayer(id)
{
    !!! 
Removed Phi
    
new szParseText[41];
    new 
szParseName[32];
    new 
szName[32];
    new 
szLine 0;
    new 
szNum 0;
    
get_user_name(idszName31);
    
szLine 0;
    while (
read_file(g_LoadFileszLineszParseText41szNum))
    {
        if (
szNum && szParseText[0] != 59)
        {
            if (
equali(szNameszParseName0))
            {
                
szReg[id] = 1;
                return 
0;
            }
            
szLine++;
        }
        
szLine++;
    }
    return 
0;
}

public 
BankMenu(id)
{
    if (
szReg[id][0][0])
    {
        if (
szAuth[id][0][0])
        {
            new 
szText[555];
            
formatex(szText554"\yБанк\n\wУ Вас на счету: \d[\r%i $\d]"szMoney[id]);
            new 
menu menu_create(szText"BankMenu_handler"0);
            
formatex(szText554"Поположить деньги на карточку");
            
menu_additem(menuszText"1"0, -1);
            if (
szMoney[id][0][0])
            {
                
formatex(szText554"Снять деньги с карточки");
                
menu_additem(menuszText"2"0, -1);
            }
            else
            {
                
formatex(szText554"Снять деньги с карточки");
                
menu_additem(menuszText"2"16777216, -1);
            }
            
formatex(szText554"Перевести деньги");
            
menu_additem(menuszText"3"0, -1);
            
formatex(szText554"Сменить Пароль");
            
menu_additem(menuszText"4"0, -1);
            
menu_setprop(menu61);
            
menu_setprop(menu33512);
            
menu_setprop(menu23556);
            
menu_setprop(menu43600);
            
menu_display(idmenu0);
        }
        else
        {
            new 
szText[555];
            
formatex(szText554"\yДобро пожаловать в банк\nСтатус: \d[\rАвторизация\d]");
            new 
menu menu_create(szText"BankMenu_handler"0);
            
formatex(szText554"Ввести Пароль");
            
menu_additem(menuszText"1"0, -1);
            
menu_setprop(menu61);
            
menu_setprop(menu34188);
            
menu_setprop(menu24232);
            
menu_setprop(menu44276);
            
menu_display(idmenu0);
        }
    }
    else
    {
        new 
szText[555];
        
formatex(szText554"Добро пожаловать\n\wЖелаете Зарегистрироваться?");
        new 
menu menu_create(szText"BankMenu_handler"0);
        
formatex(szText554"Зарегистрироваться");
        
menu_additem(menuszText"1"0, -1);
        
menu_setprop(menu61);
        
menu_setprop(menu34892);
        
menu_setprop(menu24936);
        
menu_setprop(menu44980);
        
menu_display(idmenu0);
    }
    return 
0;
}

public 
BankMenu_handler(idmenuitem)
{
    !!! 
Removed Phi
    
if (item == -3)
    {
        
menu_destroy(menu);
        return 
1;
    }
    new 
szData[6];
    new 
szName[64];
    new 
szAccess 0;
    new 
szCallback 0;
    
menu_item_getinfo(menuitemszAccessszData5szName63szCallback);
    new 
szKey str_to_num(szData);
    switch (
szKey)
    {
        case 
1:
        {
            if (
szReg[id][0][0])
            {
                if (
szAuth[id][0][0])
                {
                    
client_cmd(id"messagemode make_amount");
                }
                else
                {
                    
client_cmd(id"messagemode auth_password");
                }
            }
            else
            {
                
client_cmd(id"messagemode reg_password");
            }
        }
        case 
2:
        {
            
client_cmd(id"messagemode withdraw_amount");
        }
        case 
3:
        {
            
client_cmd(id"messagemode transfer_amount");
        }
        case 
4:
        {
            
client_cmd(id"messagemode edit_password");
        }
        default:
        {
        }
    }
    return 
1;
}

public 
MakeMoney(id)
{
    if (!
szReg[id][0][0])
    {
        
ChatColor(id"!g[Банк]!yВы не !tзарегистророванны !yв банке");
        return 
1;
    }
    if (!
szAuth[id][0][0])
    {
        
ChatColor(id"!g[Банк]!yВы не !tавторизованы !yв банке");
        return 
1;
    }
    new 
szParam[10];
    
read_args(szParam9);
    
remove_quotes(szParam);
    if (
strlen(szParam))
    {
        new 
0;
        while (
strlen(szParam) > x)
        {
            if (!
isdigit(szParam[x]))
            {
                
ChatColor(id"!g[Банк]!yСумма должна быть только !tчислом");
                return 
1;
            }
            
x++;
        }
        new 
szAmount str_to_num(szParam);
        if (
szAmount jbe_get_user_money(id))
        {
            
ChatColor(id"!g[Банк]!yУ вас недостаточно !tсредств");
            return 
1;
        }
        new 
szNewMoney 0;
        
szNewMoney szAmount szMoney[id][0][0];
        if (
get_user_flags(id0) & 524288)
        {
            if (
get_pcvar_num(g_Cvar[3][0]) < szNewMoney)
            {
                
ChatColor(id"!g[Банк]!yПополнение !tзапрещено - !yвы привысите лимит в !g%d$"get_pcvar_num(g_Cvar[3][0]));
                return 
1;
            }
        }
        else
        {
            if (
get_pcvar_num(g_Cvar[2][0]) < szNewMoney)
            {
                
ChatColor(id"!g[Банк]!yПополнение !tзапрещено - !yвы привысите лимит в !g%d$"get_pcvar_num(g_Cvar[2][0]));
                return 
1;
            }
        }
        
UpdateMoney(id1szAmount);
        return 
1;
    }
    
ChatColor(id"!g[Банк]!yПустое значение !tНЕВОЗМОЖНО");
    return 
1;
}

public 
WithdrawMoney(id)
{
    if (!
szReg[id][0][0])
    {
        
ChatColor(id"!g[Банк]!yВы не !tзарегистророванны !yв банке");
        return 
1;
    }
    if (!
szAuth[id][0][0])
    {
        
ChatColor(id"!g[Банк]!yВы не !tавторизованы !yв банке");
        return 
1;
    }
    new 
szParam[10];
    
read_args(szParam9);
    
remove_quotes(szParam);
    if (
strlen(szParam))
    {
        new 
0;
        while (
strlen(szParam) > x)
        {
            if (!
isdigit(szParam[x]))
            {
                
ChatColor(id"!g[Банк]!yСумма должна быть только !tчислом");
                return 
1;
            }
            
x++;
        }
        new 
szAmount str_to_num(szParam);
        if (
szAmount szMoney[id][0][0])
        {
            
ChatColor(id"!g[Банк]!yУ вас недостаточно !tсредств");
            return 
1;
        }
        
UpdateMoney(id2szAmount);
        return 
1;
    }
    
ChatColor(id"!g[Банк]!yПустое значение !tНЕВОЗМОЖНО");
    return 
1;
}

public 
UpdateMoney(idtypeamount)
{
    !!! 
Removed Phi
    
new szParseText[41];
    new 
szParseName[32];
    new 
szParsePassword[32];
    new 
szParseMoney[32];
    new 
szName[32];
    new 
szLine 0;
    new 
szNum 0;
    
get_user_name(idszName31);
    
szLine 0;
    while (
read_file(g_LoadFileszLineszParseText41szNum))
    {
        if (
szNum && szParseText[0] != 59)
        {
            if (
equali(szNameszParseName0))
            {
                if (
type == 1)
                {
                    new 
szText[512];
                    new 
szNewMoney 0;
                    
szNewMoney amount str_to_num(szParseMoney);
                    
jbe_set_user_money(idjbe_get_user_money(id) - amount"");
                    
szMoney[id] = amount szMoney[id][0][0];
                    
formatex(szText511"\"%s\" \"%s\" \"%d\""szParseNameszParsePasswordszNewMoney);
                    
write_file(g_LoadFileszTextszLine);
                    
ChatColor(id"!g[Банк]!yВы успешно !tпополнили !yсвой счет на !g%d$"amount);
                    
szLine++;
                }
                if (
type == 2)
                {
                    new 
szText[512];
                    new 
szNewMoney 0;
                    
szNewMoney str_to_num(szParseMoney) - amount;
                    
jbe_set_user_money(idamount jbe_get_user_money(id), "");
                    
szMoney[id] = szMoney[id][0][0] - amount;
                    
formatex(szText511"\"%s\" \"%s\" \"%d\""szParseNameszParsePasswordszNewMoney);
                    
write_file(g_LoadFileszTextszLine);
                    
ChatColor(id"!g[Банк]!yВы успешно !tвывели !yсо своего счета !g%d$"amount);
                    
szLine++;
                }
                
szLine++;
            }
            
szLine++;
        }
        
szLine++;
    }
    return 
0;
}

public 
AuthPlayer(id)
{
    if (
szReg[id][0][0])
    {
        if (!
szAuth[id][0][0])
        {
            new 
szArgsPassword[32];
            
read_args(szArgsPassword31);
            
remove_quotes(szArgsPassword);
            if (
strlen(szArgsPassword))
            {
                new 
szParseText[41];
                new 
szParseName[32];
                new 
szParsePassword[32];
                new 
szParseMoney[32];
                new 
szName[32];
                new 
szLine 0;
                new 
szNum 0;
                new 
szNumMoney 0;
                
get_user_name(idszName31);
                
szLine 0;
                while (
read_file(g_LoadFileszLineszParseText41szNum))
                {
                    
parse(szParseTextszParseName31szParsePassword31szParseMoney31);
                    new 
var1;
                    new 
var2;
                    new 
var3;
                    if (
szNum 0)
                    {
                        if (
szParseText[0] != 59)
                        {
                            
var2 1;
                            
var3 59;
                            new 
var4;
                            if (
var2)
                            {
                                if (
equali(szNameszParseName0))
                                {
                                    
ChatColor(id"%s,%s,%s,%s"szNameszParseNameszParsePasswordszArgsPassword);
                                    if (
equali(szParsePasswordszArgsPassword0))
                                    {
                                        
szAuth[id] = 1;
                                        
szNumMoney str_to_num(szParseMoney);
                                        
szMoney[id] = szNumMoney;
                                        new 
var5 szMoney;
                                        
ChatColor(id"!g[Банк]!yВы успешно !tавторизовались. !yВаш баланс !g%i$"var5[id]);
                                        
szLine++;
                                    }
                                    
szInvalidPassword[id]++;
                                    if (
get_pcvar_num(g_Cvar[1][0]) > szInvalidPassword[id][0][0])
                                    {
                                        
ChatColor(id"!g[Банк]!yАвторизация !tНЕУДАЛАСЬ. !yНеверный пароль.Осталось попыток !g(!t%d!g)"get_pcvar_num(g_Cvar[1][0]) - szInvalidPassword[id][0][0]);
                                        return 
1;
                                    }
                                    
server_cmd(11336get_user_userid(id));
                                    return 
1;
                                }
                                
var4 var5;
                                
szLine++;
                            }
                            else
                            {
                                
var4 var3;
                                
szLine++;
                            }
                            
szLine++;
                        }
                        
var1 59;
                    }
                    else
                    {
                        
var1 0;
                    }

/ * 
ERRORНе удалось привести тип объекта "Lysis.DSentinel" к типу "Lysis.DReturn". * /
 function 
"AuthPlayer"
public AuthPlayer(id)

public 
RegPlayer(id)
{
    if (!
szReg[id][0][0])
    {
        new 
szArgsPassword[32];
        
read_args(szArgsPassword31);
        
remove_quotes(szArgsPassword);
        if (
strlen(szArgsPassword))
        {
            new 
szText[512];
            new 
szName[32];
            
get_user_name(idszName31);
            
formatex(szText511"\"%s\" \"%s\" \"0\""szNameszArgsPassword);
            
write_file(g_LoadFileszText, -1);
            
szReg[id] = 1;
            
szAuth[id] = 1;
            
ChatColor(id"!g[Банк]!yВы успешно !tзарегистрированны. !yВаш пароль !g%s"szArgsPassword);
            return 
1;
        }
        
ChatColor(id"!g[Банк]!yПустое значение !tНЕВОЗМОЖНО");
        return 
1;
    }
    
ChatColor(id"!g[Банк]!yВы !tзарегистророванны !yв банке");
    return 
1;
}

public 
EditPassword(id)
{
    !!! 
Removed Phi
    
if (szReg[id][0][0])
    {
        if (
szAuth[id][0][0])
        {
            new 
szNewPassword[32];
            
read_args(szNewPassword31);
            
remove_quotes(szNewPassword);
            if (
strlen(szNewPassword))
            {
                new 
szParseText[41];
                new 
szParseName[32];
                new 
szParsePassword[32];
                new 
szParseMoney[32];
                new 
szName[32];
                new 
szLine 0;
                new 
szNum 0;
                
get_user_name(idszName31);
                
szLine 0;
                while (
read_file(g_LoadFileszLineszParseText41szNum))
                {
                    if (
szNum && szParseText[0] != 59)
                    {
                        if (
equali(szNameszParseName0))
                        {
                            new 
szText[512];
                            
formatex(szText511"\"%s\" \"%s\" \"%s\""szNameszNewPasswordszParseMoney);
                            
write_file(g_LoadFileszTextszLine);
                            
ChatColor(id"!g[Банк]!yВаш пароль !tуспешно !yизменен на !g%s"szNewPassword);
                            return 
1;
                        }
                        
szLine++;
                    }
                    
szLine++;
                }
                return 
1;
            }
            
ChatColor(id"!g[Банк]!yПустое значение !tНЕВОЗМОЖНО");
            return 
1;
        }
        
ChatColor(id"!g[Банк]!yВы не !tавторизованы !yв банке");
        return 
1;
    }
    
ChatColor(id"!g[Банк]!yВы не !tзарегистророванны !yв банке");
    return 
1;
}

public 
TransferAmount(id)
{
    new 
szParam[10];
    
read_args(szParam9);
    
remove_quotes(szParam);
    if (
strlen(szParam))
    {
        new 
0;
        while (
strlen(szParam) > x)
        {
            if (!
isdigit(szParam[x]))
            {
                
ChatColor(id"!g[Банк]!yСумма должна быть только !tчислом");
                return 
1;
            }
            
x++;
        }
        new 
szAmount str_to_num(szParam);
        if (
szAmount szMoney[id][0][0])
        {
            
ChatColor(id"!g[Банк]!yУ вас недостаточно !tсредств");
            return 
1;
        }
        
szTransferMoney[id] = szAmount;
        
TransferPlayer(id);
        return 
1;
    }
    
ChatColor(id"!g[Банк]!yПустое значение !tНЕВОЗМОЖНО");
    return 
1;
}

public 
TransferPlayer(id)
{
    !!! 
Removed Phi
    
new szText[555];
    
formatex(szText554"%L"id"DR_BANK_TRANSFERMENU_TITLE");
    new 
menu menu_create(szText"TransferPlayer_handler"0);
    new 
szPlayers[32];
    new 
szName[32];
    new 
szPlayer[10];
    new 
szNum 0;
    new 
Player 0;
    
get_players(szPlayersszNum"""");
    new 
0;
    while (
szNum)
    {
        if (
id != Player && is_user_bot(id))
        {
        }
        else
        {
            
get_user_name(PlayerszName31);
            
num_to_str(PlayerszPlayer9);
            if (!
szReg[Player][0][0])
            {
                
formatex(szText554"\d[ \rНету счета в банке \d]");
                
menu_additem(menuszTextszPlayer16777216, -1);
            }
            else
            {
                
formatex(szText554"%s - \d[ \r%i \d]"szNameszMoney[Player]);
                
menu_additem(menuszTextszPlayer0, -1);
            }
        }
        
i++;
    }
    
menu_setprop(menu61);
    
menu_setprop(menu315820);
    
menu_setprop(menu215864);
    
menu_setprop(menu415908);
    
menu_display(idmenu0);
    return 
0;
}

public 
TransferPlayer_handler(idmenuitem)
{
    if (
item == -3)
    {
        
szTransferMoney[id] = 0;
        
menu_destroy(menu);
        return 
1;
    }
    new 
szData[6];
    new 
szName[64];
    new 
szAccess 0;
    new 
szCallback 0;
    
menu_item_getinfo(menuitemszAccessszData5szName63szCallback);
    new 
Player str_to_num(szData);
    
szMoney[Player] = szTransferMoney[id][0][0] + szMoney[Player][0][0];
    
szMoney[id] = szMoney[id][0][0] - szTransferMoney[id][0][0];
    new 
szNameTr[32];
    new 
szNameTd[32];
    
get_user_name(idszNameTr31);
    
get_user_name(PlayerszNameTd31);
    
ChatColor(0"!g[Банк]!yИгрок !t%s !yперевел на счет игрока !t%s !g%d$"szNameTrszNameTdszTransferMoney[id]);
    
szTransferMoney[id] = 0;
    
menu_destroy(menu);
    return 
1;
}

public 
client_infochanged(id)
{
    
szReg[id] = 0;
    
szAuth[id] = 0;
    
szMoney[id] = 0;
    
set_task(1.00"CheckPlayer"id""0""0);
    return 
0;
}

ChatColor(idString:input[])
{
    new 
count 1;
    new 
players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
replace_all(msg190"!g""\4");
    
replace_all(msg190"!y""\1");
    
replace_all(msg190"!t""\3");
    if (
id)
    {
        
players[0] = id;
    }
    else
    {
        
get_players(playerscount"ch""");
    }
    new 
0;
    while (
count)
    {
        if (
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), 17208players[i]);
            
write_byte(players[i]);
            
write_string("");
            
message_end();
            
i++;
        }
        
i++;
    }
    return 
0;
}

 
Аватара пользователя
Graviti
 
Сообщения: 35
Зарегистрирован: 29 янв 2018, 16:11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
Php
HTML
CSS
Java

Re: Ограничение банка | jbe_bank

Сообщение Den41k593 » 03 дек 2018, 20:11

Пиши в ВК: Вы должны зарегистрироваться, чтобы видеть ссылки. .Решим проблему за некоторую сумму.
Аватара пользователя
Den41k593
 
Сообщения: 5
Зарегистрирован: 01 ноя 2018, 11:15
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn

Re: Ограничение банка | jbe_bank

Сообщение Vaqtincha » 03 дек 2018, 20:15

Den41k593, пошел ты
админгандонсоси
Аватара пользователя
Vaqtincha
 
Сообщения: 277
Зарегистрирован: 28 мар 2018, 15:05
Забанен
Благодарил (а): 8 раз.
Поблагодарили: 53 раз.


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11