Друзья, помогите, нашел плагин на этом форуме для передачи денег между игроками, но как можно сделать так что бы можно было переводить только между своей команды.
Код:
Код
#define PREFIX "^4[^3Money^4]"
#define MAX_MONEY 16000
#define BASE_MONEY_AMOUNT 1000.0 // Need to be a float for calculations
/*
If you have $800 menus will be:
1) $100 * floatround(your_current_money_amount / BASE_MONEY_AMOUNT)
2) $200 * floatround(your_current_money_amount / BASE_MONEY_AMOUNT)
3) $300 * floatround(your_current_money_amount / BASE_MONEY_AMOUNT)
4) $500 * floatround(your_current_money_amount / BASE_MONEY_AMOUNT)
5) your_current_money_amount ($800 in our case)
6) "Type your own number"
*/
new players_menu, money_menu, players[32], num, i
new accessmenu, sName[64], callback
new msg[128]
new money_coef, money_amount
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /tm", "transfer_menu", ADMIN_ALL, "") // TM - Transfer Money
register_clcmd("say tm", "transfer_menu", ADMIN_ALL, "")
register_clcmd("say_team /tm", "transfer_menu", ADMIN_ALL, "")
register_clcmd("say_team tm", "transfer_menu", ADMIN_ALL, "")
register_clcmd("tm", "transfer_menu", ADMIN_ALL, "")
register_clcmd("transfer", "transfer_money", ADMIN_ALL, "") // Just for using messagemode
}
public transfer_menu(id)
{
get_players(players, num, "che", cs_get_user_team(id)==CS_TEAM_CT ? "CT" : "TERRORIST")
if (num <= 1)
{
ColorChat(id, DontChange, "%s Некому передавать деньги", PREFIX)
return PLUGIN_HANDLED
}
if (!is_user_alive(id))
{
ColorChat(id, DontChange, "%s Вы мертвы", PREFIX)
return PLUGIN_HANDLED;
}
players_menu = menu_create("Кому передать деньги?", "players_menu_handler")
new tempname[32], info[10], main[172]
for(i = 0; i < num; i++)
{
if(players[i] == id || is_user_bot(players[i]))
continue
get_user_name(players[i], tempname, 31)
num_to_str(players[i], info, 9)
formatex(main, charsmax(main), "\w%s \r[\y%i\r]", tempname, cs_get_user_money(players[i]) );
menu_additem(players_menu, main, info, 0)
}
menu_setprop(players_menu, MPROP_NEXTNAME, "Далее")
menu_setprop(players_menu, MPROP_BACKNAME, "Назад")
menu_setprop(players_menu, MPROP_EXITNAME, "Выход")
menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, players_menu, 0)
return PLUGIN_CONTINUE
}
public players_menu_handler(id, players_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(players_menu)
client_cmd(id, "optionsmenu")
return PLUGIN_HANDLED
}
new sData[6], menuTitle[127] // target id
menu_item_getinfo(players_menu, item, accessmenu, sData, 5, sName, 63, callback)
new user_money = cs_get_user_money(id)
money_coef = floatround(float(user_money) / BASE_MONEY_AMOUNT)
formatex(menuTitle, charsmax(menuTitle), "\wПередать деньги^n\dУ вас \y%d$^n", user_money );
money_menu = menu_create(menuTitle, "money_menu_handler")
new str[6]
for (new i = 1; i < 5; i++)
{
if(i == 4)
money_amount = 500 * money_coef
else
money_amount = 100 * i * money_coef
num_to_str(money_amount, str, 5)
menu_additem(money_menu, str, sData, 0)
}
num_to_str(user_money, str, 5)
menu_additem(money_menu, str, sData, 0)
menu_additem(money_menu, "Ввести кол-во", sData, 0)
menu_setprop(money_menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(money_menu, MPROP_EXITNAME, "Назад")
menu_display(id, money_menu, 0)
return PLUGIN_CONTINUE
}
public money_menu_handler(id, money_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(money_menu)
menu_display(id, players_menu, 0)
return PLUGIN_CONTINUE
}
new sData[6] //target id
menu_item_getinfo(money_menu, item, accessmenu, sData, 5, sName, 63, callback)
sData[0] = str_to_num(sData)
switch(item)
{
case 0:
{
new iName = str_to_num(sName) // money amount
formatex(msg, 127, "transfer %i %i", sData[0], iName)
}
case 1:
{
new iName = str_to_num(sName)
formatex(msg, 127, "transfer %i %i", sData[0], iName)
}
case 2:
{
new iName = str_to_num(sName)
formatex(msg, 127, "transfer %i %i", sData[0], iName)
}
case 3:
{
new iName = str_to_num(sName)
formatex(msg, 127, "transfer %i %i", sData[0], iName)
}
case 4:
{
new iName = str_to_num(sName)
formatex(msg, 127, "transfer %i %i", sData[0], iName)
}
case 5:
formatex(msg, 127, "messagemode ^"transfer %i^"", sData[0])
}
client_cmd(id, msg)
return PLUGIN_CONTINUE
}
public transfer_money(id)
{
new param[9]
read_argv(1, param, 5)
new player = str_to_num(param)
new names[2][32]
get_user_name(player, names[1], 31)
if(is_user_bot(player) || !is_user_connected(player))
{
ColorChat(id, DontChange, "%s Игрока ^3%s ^4нет на сервере", PREFIX, names[1])
return PLUGIN_HANDLED
}
if(player == id)
{
ColorChat(id, DontChange, "%s Нельзя передать деньги себе.", PREFIX)
return PLUGIN_HANDLED
}
read_argv(2, param, 5)
new p_len = strlen(param)
for (new x; x < p_len; x++)
{
if(!isdigit(param[x]))
{
ColorChat(id, DontChange, "%s Параметр должен быть числом", PREFIX)
return PLUGIN_HANDLED
}
}
new amount = str_to_num(param)
new money = cs_get_user_money(id)
if (money < amount)
{
ColorChat(id, DontChange, "%s У вас не хватает денег", PREFIX)
return PLUGIN_HANDLED
}
if(amount < 100)
{
ColorChat(id, DontChange, "%s Нельзя передать меньше ^3100^4$", PREFIX)
return PLUGIN_HANDLED
}
new player_money = cs_get_user_money(player)
if(player_money == MAX_MONEY)
{
ColorChat(id, DontChange, "%s У игрока ^3%s ^4уже ^3%^4$i", PREFIX, names[1], MAX_MONEY)
return PLUGIN_HANDLED
}
get_user_name(id, names[0], 31)
new maxmoney = MAX_MONEY - player_money
if(maxmoney >= amount)
{
cs_set_user_money(id, money - amount, 1)
cs_set_user_money(player, player_money + amount, 1)
ColorChat(0, DontChange, "^3%s ^4передал ^3%i^4$ игроку ^3%s", PREFIX, amount, names[1])
ColorChat(0, player, "^3%s ^4получил ^3%d^4$ от игрока ^3%s", PREFIX, amount, names[0])
return PLUGIN_HANDLED
}
cs_set_user_money(id, maxmoney, 1)
cs_set_user_money(player, MAX_MONEY, 1)
ColorChat(0, DontChange, "^3%s ^4передал ^3%i^4$ игроку ^3%s", PREFIX, maxmoney, names[1])
ColorChat(0, player, "^3%s ^4получил ^3%d^4$ от игрока ^3%s", PREFIX, maxmoney, names[0])
return PLUGIN_HANDLED
}