Когда нажимаю кнопку пополнить ко мне добовляется 720 баксов на счёт. Помогите решить проблему.
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <jbe_core>
#define PLUGIN "[DR]Bank"
#define VERSION "2.0"
#define AUTHOR "Crash94"
new g_LoadFile[81]
new szReg[33], szAuth[33], szMoney[33]
new szInvalidPassword[33]
new szTransferMoney[33]
new g_Cvar[4]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /bank", "BankMenu")
register_clcmd("say_team /bank", "BankMenu")
g_Cvar[1] = register_cvar("dr_bank_invalid_password", "3")
g_Cvar[2] = register_cvar("dr_bank_limit_player", "100000")
g_Cvar[3] = register_cvar("dr_bank_limit_vip", "250000")
register_clcmd("make_amount", "MakeMoney")
register_clcmd("withdraw_amount", "WithdrawMoney")
register_clcmd("auth_password", "AuthPlayer")
register_clcmd("reg_password", "RegPlayer")
register_clcmd("edit_password", "EditPassword")
register_clcmd("transfer_amount", "TransferAmount")
register_dictionary("dr_bank.txt")
}
public client_disconnect(id)
{
szReg[id] = false
szAuth[id] = false
szMoney[id] = 0
szInvalidPassword[id] = 0
szTransferMoney[id] = 0
}
public plugin_cfg()
{
get_configsdir(g_LoadFile, 81)
format(g_LoadFile, 80, "%s/dr_bank.ini", g_LoadFile)
}
public client_connect(id)
{
set_task(2.0, "CheckPlayer", id)
}
public CheckPlayer(id)
{
new szParseText[41], szParseName[32]
new szName[32]
new szLine, szNum
get_user_name(id, szName, charsmax( szName ))
for(szLine=0;read_file(g_LoadFile, szLine, szParseText, 41, szNum);szLine++)
{
parse(szParseText, szParseName, charsmax( szParseName ))
if(szNum > 0 && szParseText[0] != ';')
{
if(equali(szName, szParseName))
{
szReg[id] = true
break
}
}
}
}
public BankMenu(id)
{
if(szReg[id])
{
if(szAuth[id])
{
new szText[555]
formatex( szText, charsmax( szText ), "%L", id, "DR_BANK_AUTHYES_TITLE", szMoney[id])
new menu = menu_create( szText, "BankMenu_handler" )
formatex( szText, charsmax( szText ), "%L", id, "AUTHYES_ITEM_1")
menu_additem( menu, szText, "1", 0 )
if(szMoney[id])
{
formatex( szText, charsmax( szText ), "%L", id, "AUTHYES_ITEM_2")
menu_additem( menu, szText, "2", 0 )
}else{
formatex( szText, charsmax( szText ), "%L", id, "AUTHYES_ITEM_2")
menu_additem( menu, szText, "2", ADMIN_ADMIN )
}
formatex( szText, charsmax( szText ), "%L", id, "AUTHYES_ITEM_3")
menu_additem( menu, szText, "3", 0 )
formatex( szText, charsmax( szText ), "%L", id, "AUTHYES_ITEM_4")
menu_additem( menu, szText, "4", 0 )
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
menu_setprop( menu, MPROP_NEXTNAME, "Далее")
menu_setprop( menu, MPROP_BACKNAME, "Назад")
menu_setprop( menu, MPROP_EXITNAME, "Выход")
menu_display( id, menu, 0 )
}else{
new szText[555]
formatex( szText, charsmax( szText ), "%L", id, "DR_BANK_AUTHNO_TITLE")
new menu = menu_create( szText, "BankMenu_handler" )
formatex( szText, charsmax( szText ), "%L", id, "AUTHNO_ITEM_1")
menu_additem( menu, szText, "1", 0 )
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
menu_setprop( menu, MPROP_NEXTNAME, "Далее")
menu_setprop( menu, MPROP_BACKNAME, "Назад")
menu_setprop( menu, MPROP_EXITNAME, "Выход")
menu_display( id, menu, 0 )
}
}else{
new szText[555]
formatex( szText, charsmax( szText ), "%L", id, "DR_BANK_REG_TITLE")
new menu = menu_create( szText, "BankMenu_handler" )
formatex( szText, charsmax( szText ), "%L", id, "REG_ITEM_1")
menu_additem( menu, szText, "1", 0 )
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
menu_setprop( menu, MPROP_NEXTNAME, "Далее")
menu_setprop( menu, MPROP_BACKNAME, "Назад")
menu_setprop( menu, MPROP_EXITNAME, "Выход")
menu_display( id, menu, 0 )
}
}
public BankMenu_handler( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new szData[6], szName[64], szAccess, szCallback
menu_item_getinfo(menu, item, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)
new szKey = str_to_num( szData )
switch( szKey )
{
case 1:
{
if(szReg[id])
{
if(szAuth[id])
{
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")
}
}
return PLUGIN_HANDLED
}
public MakeMoney(id)
{
if(!szReg[id])
{
ChatColor(id, "%L", 0, "DR_BANK_NOREG")
return PLUGIN_HANDLED
}
if(!szAuth[id])
{
ChatColor(id, "%L", 0, "DR_BANK_NOAUTH")
return PLUGIN_HANDLED
}
new szParam[10]
read_args(szParam, 9)
remove_quotes(szParam)
if(strlen( szParam ) == 0)
{
ChatColor(id, "%L", id, "DR_BANK_NOTEXT")
return PLUGIN_HANDLED
}
for(new x; x < strlen( szParam ); x++)
{
if(!isdigit( szParam[x] ))
{
ChatColor(id, "%L", 0, "DR_BANK_NONUMBER")
return PLUGIN_HANDLED
}
}
new szAmount = str_to_num( szParam )
if (cs_get_user_money(id) < szAmount)
{
ChatColor(id, "%L", 0, "DR_BANK_NOMONEY")
return PLUGIN_HANDLED
}
new szNewMoney
szNewMoney = szMoney[id] + szAmount
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
if(szNewMoney > get_pcvar_num( g_Cvar[3] ))
{
ChatColor(id, "%L", 0, "DR_BANK_LIMIT", get_pcvar_num( g_Cvar[3] ))
return PLUGIN_HANDLED
}
}else{
if(szNewMoney > get_pcvar_num( g_Cvar[2] ))
{
ChatColor(id, "%L", 0, "DR_BANK_LIMIT", get_pcvar_num( g_Cvar[2] ))
return PLUGIN_HANDLED
}
}
UpdateMoney(id, 1, szAmount)
return PLUGIN_HANDLED
}
public WithdrawMoney(id)
{
if(!szReg[id])
{
ChatColor(id, "%L", 0, "DR_BANK_NOREG")
return PLUGIN_HANDLED
}
if(!szAuth[id])
{
ChatColor(id, "%L", 0, "DR_BANK_NOAUTH")
return PLUGIN_HANDLED
}
new szParam[10]
read_args(szParam, 9)
remove_quotes(szParam)
if(strlen( szParam ) == 0)
{
ChatColor(id, "%L", id, "DR_BANK_NOTEXT")
return PLUGIN_HANDLED
}
for(new x; x < strlen( szParam ); x++)
{
if(!isdigit( szParam[x] ))
{
ChatColor(id, "%L", 0, "DR_BANK_NONUMBER")
return PLUGIN_HANDLED
}
}
new szAmount = str_to_num( szParam )
if (szMoney[id] < szAmount)
{
ChatColor(id, "%L", 0, "DR_BANK_NOMONEY")
return PLUGIN_HANDLED
}
UpdateMoney(id, 2, szAmount)
return PLUGIN_HANDLED
}
public UpdateMoney(id, type, amount)
{
new szParseText[41], szParseName[32], szParsePassword[32], szParseMoney[32]
new szName[32]
new szLine, szNum
get_user_name(id, szName, charsmax( szName ))
for(szLine=0;read_file(g_LoadFile, szLine, szParseText, 41, szNum);szLine++)
{
parse(szParseText, szParseName, charsmax( szParseName ), szParsePassword, charsmax( szParsePassword ), szParseMoney, charsmax( szParseMoney ))
if(szNum > 0 && szParseText[0] != ';')
{
if(equali(szName, szParseName))
{
if(type == 1)
{
new szText[512], szNewMoney
szNewMoney = str_to_num( szParseMoney ) + amount
cs_set_user_money(id, cs_get_user_money(id) - amount)
szMoney[id] = szMoney[id] + amount
formatex(szText, charsmax( szText ), "^"%s^" ^"%s^" ^"%d^"", szParseName, szParsePassword, szNewMoney)
write_file(g_LoadFile, szText, szLine)
ChatColor(id, "%L", 0, "DR_BANK_MAKE_GOOD", amount)
}else
if(type == 2)
{
new szText[512], szNewMoney
szNewMoney = str_to_num( szParseMoney ) - amount
cs_set_user_money(id, cs_get_user_money(id) + amount)
szMoney[id] = szMoney[id] - amount
formatex(szText, charsmax( szText ), "^"%s^" ^"%s^" ^"%d^"", szParseName, szParsePassword, szNewMoney)
write_file(g_LoadFile, szText, szLine)
ChatColor(id, "%L", 0, "DR_BANK_WITGDRAW_GOOD", amount)
}
}
}
}
}
public AuthPlayer(id)
{
if(szReg[id])
{
if(!szAuth[id])
{
new szArgsPassword[32]
read_args(szArgsPassword, 31)
remove_quotes(szArgsPassword)
if(strlen( szArgsPassword ) == 0)
{
ChatColor(id, "%L", id, "DR_BANK_NOTEXT")
return PLUGIN_HANDLED
}
new szParseText[41], szParseName[32], szParsePassword[32], szParseMoney[32]
new szName[32]
new szLine, szNum
new szNumMoney
get_user_name(id, szName, charsmax( szName ))
for(szLine=0;read_file(g_LoadFile, szLine, szParseText, 41, szNum);szLine++)
{
parse(szParseText, szParseName, charsmax( szParseName ), szParsePassword, charsmax( szParsePassword ), szParseMoney, charsmax( szParseMoney ))
if(szNum > 0 && szParseText[0] != ';')
{
if(equali(szName, szParseName))
{
if(equali(szParsePassword, szArgsPassword))
{
szAuth[id] = true
szNumMoney = str_to_num( szParseMoney )
szMoney[id] = szNumMoney
ChatColor(id, "%L", id, "DR_BANK_AUTH_GOOD", szMoney[id])
}else{
++szInvalidPassword[id]
if(szInvalidPassword[id] < get_pcvar_num( g_Cvar[1] ))
{
ChatColor(id, "%L", id, "DR_BANK_AUTH_FAIL", get_pcvar_num( g_Cvar[1] ) - szInvalidPassword[id])
return PLUGIN_HANDLED
}else{
server_cmd("kick #%d ^"%L^" ", get_user_userid(id), 0, "DR_BANK_KICK")
return PLUGIN_HANDLED
}
}
}
}
}
}else{
ChatColor(id, "%L", 0, "DR_BANK_AUTH")
return PLUGIN_HANDLED
}
}else{
ChatColor(id, "%L", 0, "DR_BANK_NOREG")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public RegPlayer(id)
{
if(!szReg[id])
{
new szArgsPassword[32]
read_args(szArgsPassword, 31)
remove_quotes(szArgsPassword)
if(strlen( szArgsPassword ) == 0)
{
ChatColor(id, "%L", id, "DR_BANK_NOTEXT")
return PLUGIN_HANDLED
}
new szText[512]
new szName[32]
get_user_name(id, szName, charsmax( szName ))
formatex(szText, charsmax( szText ), "^"%s^" ^"%s^" ^"0^"", szName, szArgsPassword)
write_file(g_LoadFile, szText, -1)
szReg[id] = true
szAuth[id] = true
ChatColor(id, "%L", 0, "DR_BANK_REG_GOOD", szArgsPassword)
}else{
ChatColor(id, "%L", 0, "DR_BANK_REG")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public EditPassword(id)
{
if(szReg[id])
{
if(szAuth[id])
{
new szNewPassword[32]
read_args(szNewPassword, 31)
remove_quotes(szNewPassword)
if(strlen( szNewPassword ) == 0)
{
ChatColor(id, "%L", id, "DR_BANK_NOTEXT")
return PLUGIN_HANDLED
}
new szParseText[41], szParseName[32], szParsePassword[32], szParseMoney[32]
new szName[32]
new szLine, szNum
get_user_name(id, szName, charsmax( szName ))
for(szLine=0;read_file(g_LoadFile, szLine, szParseText, 41, szNum);szLine++)
{
parse(szParseText, szParseName, charsmax( szParseName ), szParsePassword, charsmax( szParsePassword ), szParseMoney, charsmax( szParseMoney ))
if(szNum > 0 && szParseText[0] != ';')
{
if(equali(szName, szParseName))
{
new szText[512]
formatex(szText, charsmax( szText ), "^"%s^" ^"%s^" ^"%s^"", szName, szNewPassword, szParseMoney)
write_file(g_LoadFile, szText, szLine)
ChatColor(id, "%L", id, "DR_BANK_EDITPASSWORD_GOOD", szNewPassword)
break
}
}
}
}else{
ChatColor(id, "%L", 0, "DR_BANK_NOAUTH")
return PLUGIN_HANDLED
}
}else{
ChatColor(id, "%L", 0, "DR_BANK_NOREG")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public TransferAmount(id)
{
new szParam[10]
read_args(szParam, 9)
remove_quotes(szParam)
if(strlen( szParam ) == 0)
{
ChatColor(id, "%L", id, "DR_BANK_NOTEXT")
return PLUGIN_HANDLED
}
for(new x; x < strlen( szParam ); x++)
{
if(!isdigit( szParam[x] ))
{
ChatColor(id, "%L", 0, "DR_BANK_NONUMBER")
return PLUGIN_HANDLED
}
}
new szAmount = str_to_num( szParam )
if (szMoney[id] < szAmount)
{
ChatColor(id, "%L", 0, "DR_BANK_NOMONEY")
return PLUGIN_HANDLED
}
szTransferMoney[id] = szAmount
TransferPlayer(id)
return PLUGIN_HANDLED
}
public TransferPlayer(id)
{
new szText[555]
formatex( szText, charsmax( szText ), "%L", id, "DR_BANK_TRANSFERMENU_TITLE")
new menu = menu_create( szText, "TransferPlayer_handler" )
new szPlayers[32], szName[32], szPlayer[10]
new szNum, Player
get_players(szPlayers, szNum)
for (new i; i < szNum; i++)
{
Player = szPlayers[i]
if(Player == id || is_user_bot(id))
continue
get_user_name(Player, szName, charsmax( szName ))
num_to_str(Player, szPlayer, charsmax( szPlayer ))
if(!szReg[Player])
{
formatex( szText, charsmax( szText ), "%s %L", szName, id, "DR_BANK_NOPLAYERREG")
menu_additem(menu, szText , szPlayer, ADMIN_ADMIN)
}else{
formatex( szText, charsmax( szText ), "%s - \d[ \r%i \d]", szName, szMoney[Player])
menu_additem(menu, szText, szPlayer, 0)
}
}
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
menu_setprop( menu, MPROP_NEXTNAME, "Далее")
menu_setprop( menu, MPROP_BACKNAME, "Назад")
menu_setprop( menu, MPROP_EXITNAME, "Выход")
menu_display( id, menu, 0 )
}
public TransferPlayer_handler( id, menu, item )
{
if (item == MENU_EXIT)
{
szTransferMoney[id] = 0
menu_destroy(menu)
return PLUGIN_HANDLED
}
new szData[6], szName[64], szAccess, szCallback
menu_item_getinfo(menu, item, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)
new Player = str_to_num( szData )
szMoney[Player] = szMoney[Player] + szTransferMoney[id]
szMoney[id] = szMoney[id] - szTransferMoney[id]
new szNameTr[32], szNameTd[32]
get_user_name(id, szNameTr, charsmax( szNameTr ))
get_user_name(Player, szNameTd, charsmax( szNameTd ))
ChatColor(0, "%L", 0, "DR_BANK_TRANSFER_GOOD", szNameTr, szNameTd, szTransferMoney[id])
szTransferMoney[id] = 0
menu_destroy(menu)
return PLUGIN_HANDLED
}
public client_infochanged(id)
{
szReg[id] = false
szAuth[id] = false
szMoney[id] = 0
set_task(1.0, "CheckPlayer", id)
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Отредактировал: Fullserver, - 16.2.2018, 9:22
Причина: Выдано устное предупреждение!