Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
Graviti » 13 ноя 2018, 23:15
Всем привет. Столкнулся с проблемой. Есть у нас сумма. Макс кол-во суммы 6000, если у User1 будет 6000 и ему переведут еще любое кол-во денег. Ограничение пропадает. Как сделать что-бы если у игрока 6000, нельзя было, что-то отправлять.
- Код: Выделить всё
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[], len, String:what[], String:with[])
{
new pos = 0;
new var1 = contain(string, what);
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 - pos, what, with))
{
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", name, len);
}
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", 0, 0.00);
g_Cvar[2] = register_cvar("dr_bank_limit_player", "4000", 0, 0.00);
g_Cvar[3] = register_cvar("dr_bank_limit_vip", "6000", 0, 0.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_LoadFile, 81);
format(g_LoadFile, 80, "%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(id, szName, 31);
szLine = 0;
while (read_file(g_LoadFile, szLine, szParseText, 41, szNum))
{
if (szNum > 0 && szParseText[0] != 59)
{
if (equali(szName, szParseName, 0))
{
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(szText, 554, "\yБанк\n\wУ Вас на счету: \d[\r%i $\d]", szMoney[id]);
new menu = menu_create(szText, "BankMenu_handler", 0);
formatex(szText, 554, "Поположить деньги на карточку");
menu_additem(menu, szText, "1", 0, -1);
if (szMoney[id][0][0])
{
formatex(szText, 554, "Снять деньги с карточки");
menu_additem(menu, szText, "2", 0, -1);
}
else
{
formatex(szText, 554, "Снять деньги с карточки");
menu_additem(menu, szText, "2", 16777216, -1);
}
formatex(szText, 554, "Перевести деньги");
menu_additem(menu, szText, "3", 0, -1);
formatex(szText, 554, "Сменить Пароль");
menu_additem(menu, szText, "4", 0, -1);
menu_setprop(menu, 6, 1);
menu_setprop(menu, 3, 3512);
menu_setprop(menu, 2, 3556);
menu_setprop(menu, 4, 3600);
menu_display(id, menu, 0);
}
else
{
new szText[555];
formatex(szText, 554, "\yДобро пожаловать в банк\nСтатус: \d[\rАвторизация\d]");
new menu = menu_create(szText, "BankMenu_handler", 0);
formatex(szText, 554, "Ввести Пароль");
menu_additem(menu, szText, "1", 0, -1);
menu_setprop(menu, 6, 1);
menu_setprop(menu, 3, 4188);
menu_setprop(menu, 2, 4232);
menu_setprop(menu, 4, 4276);
menu_display(id, menu, 0);
}
}
else
{
new szText[555];
formatex(szText, 554, "Добро пожаловать\n\wЖелаете Зарегистрироваться?");
new menu = menu_create(szText, "BankMenu_handler", 0);
formatex(szText, 554, "Зарегистрироваться");
menu_additem(menu, szText, "1", 0, -1);
menu_setprop(menu, 6, 1);
menu_setprop(menu, 3, 4892);
menu_setprop(menu, 2, 4936);
menu_setprop(menu, 4, 4980);
menu_display(id, menu, 0);
}
return 0;
}
public BankMenu_handler(id, menu, item)
{
!!! 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(menu, item, szAccess, szData, 5, szName, 63, szCallback);
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(szParam, 9);
remove_quotes(szParam);
if (strlen(szParam))
{
new x = 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(id, 0) & 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(id, 1, szAmount);
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(szParam, 9);
remove_quotes(szParam);
if (strlen(szParam))
{
new x = 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(id, 2, szAmount);
return 1;
}
ChatColor(id, "!g[Банк]!yПустое значение !tНЕВОЗМОЖНО");
return 1;
}
public UpdateMoney(id, type, amount)
{
!!! 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(id, szName, 31);
szLine = 0;
while (read_file(g_LoadFile, szLine, szParseText, 41, szNum))
{
if (szNum > 0 && szParseText[0] != 59)
{
if (equali(szName, szParseName, 0))
{
if (type == 1)
{
new szText[512];
new szNewMoney = 0;
szNewMoney = amount + str_to_num(szParseMoney);
jbe_set_user_money(id, jbe_get_user_money(id) - amount, "");
szMoney[id] = amount + szMoney[id][0][0];
formatex(szText, 511, "\"%s\" \"%s\" \"%d\"", szParseName, szParsePassword, szNewMoney);
write_file(g_LoadFile, szText, szLine);
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(id, amount + jbe_get_user_money(id), "");
szMoney[id] = szMoney[id][0][0] - amount;
formatex(szText, 511, "\"%s\" \"%s\" \"%d\"", szParseName, szParsePassword, szNewMoney);
write_file(g_LoadFile, szText, szLine);
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(szArgsPassword, 31);
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(id, szName, 31);
szLine = 0;
while (read_file(g_LoadFile, szLine, szParseText, 41, szNum))
{
parse(szParseText, szParseName, 31, szParsePassword, 31, szParseMoney, 31);
new var1;
new var2;
new var3;
if (szNum > 0)
{
if (szParseText[0] != 59)
{
var2 = 1;
var3 = 59;
new var4;
if (var2)
{
if (equali(szName, szParseName, 0))
{
ChatColor(id, "%s,%s,%s,%s", szName, szParseName, szParsePassword, szArgsPassword);
if (equali(szParsePassword, szArgsPassword, 0))
{
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(11336, get_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(szArgsPassword, 31);
remove_quotes(szArgsPassword);
if (strlen(szArgsPassword))
{
new szText[512];
new szName[32];
get_user_name(id, szName, 31);
formatex(szText, 511, "\"%s\" \"%s\" \"0\"", szName, szArgsPassword);
write_file(g_LoadFile, szText, -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(szNewPassword, 31);
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(id, szName, 31);
szLine = 0;
while (read_file(g_LoadFile, szLine, szParseText, 41, szNum))
{
if (szNum > 0 && szParseText[0] != 59)
{
if (equali(szName, szParseName, 0))
{
new szText[512];
formatex(szText, 511, "\"%s\" \"%s\" \"%s\"", szName, szNewPassword, szParseMoney);
write_file(g_LoadFile, szText, szLine);
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(szParam, 9);
remove_quotes(szParam);
if (strlen(szParam))
{
new x = 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(szText, 554, "%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(szPlayers, szNum, "", "");
new i = 0;
while (i < szNum)
{
if (id != Player && is_user_bot(id))
{
}
else
{
get_user_name(Player, szName, 31);
num_to_str(Player, szPlayer, 9);
if (!szReg[Player][0][0])
{
formatex(szText, 554, "\d[ \rНету счета в банке \d]");
menu_additem(menu, szText, szPlayer, 16777216, -1);
}
else
{
formatex(szText, 554, "%s - \d[ \r%i \d]", szName, szMoney[Player]);
menu_additem(menu, szText, szPlayer, 0, -1);
}
}
i++;
}
menu_setprop(menu, 6, 1);
menu_setprop(menu, 3, 15820);
menu_setprop(menu, 2, 15864);
menu_setprop(menu, 4, 15908);
menu_display(id, menu, 0);
return 0;
}
public TransferPlayer_handler(id, menu, item)
{
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(menu, item, szAccess, szData, 5, szName, 63, szCallback);
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(id, szNameTr, 31);
get_user_name(Player, szNameTd, 31);
ChatColor(0, "!g[Банк]!yИгрок !t%s !yперевел на счет игрока !t%s !g%d$", szNameTr, szNameTd, szTransferMoney[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(id, String:input[])
{
new count = 1;
new 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", "");
}
new i = 0;
while (i < count)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), 17208, players[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
Den41k593 » 03 дек 2018, 20:11
-
Den41k593
-
- Сообщения: 5
- Зарегистрирован: 01 ноя 2018, 11:15
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Опыт программирования: Меньше недели
- Языки программирования: Pawn
Vaqtincha » 03 дек 2018, 20:15
Den41k593, пошел ты
админгандонсоси
-
Vaqtincha
-
- Сообщения: 277
- Зарегистрирован: 28 мар 2018, 15:05
- Забанен
- Благодарил (а): 8 раз.
- Поблагодарили: 53 раз.
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: Yandex [Bot] и гости: 11