Есть такой кусок кода:
Код
public change_lvl_cmd(id, level, cid){
static players[MAX_PLAYERS], pnum, arg[32], args[63], tmp, amount, i, j, name[32]
if (!cmd_access(id, level, cid, 4))
return PLUGIN_HANDLED
read_argv(1, arg, 31)
pnum = 0
if(equali(arg, "@all")){
for(i=1; i<=g_max_players; i++)
if(is_user_connected(i))
players[pnum++] = i
}else if(equali(arg, "@t")){
for(i=1; i<=g_max_players; i++)
if(is_user_connected(i) && get_user_team(i)==1)
players[pnum++] = i
}else if(equali(arg, "@ct")){
for(i=1; i<=g_max_players; i++)
if(is_user_connected(i) && get_user_team(i)==2)
players[pnum++] = i
}else if(arg[0] == '#'){
tmp = str_to_num(arg[1])
for(i=1; i<=g_max_players; i++)
if(is_user_connected(i) && get_user_userid(i)==tmp)
players[pnum++] = i
}else{
for(i=1; i<=g_max_players; i++)
if(is_user_connected(i)){
get_user_name(i, name, 31)
if(equal(name, arg)){
pnum = 0
players[pnum++] = i
break
}else if(contain(name, arg)>-1){
players[pnum++] = i
}
}
}
if(pnum<=0){
client_print(id, print_console, "[RPG mod]Ошибка: цель не найдена")
return PLUGIN_HANDLED
}
read_argv(3, arg, 31)
amount = str_to_num(arg)
read_argv(2, arg, 1)
if(amount<0 || (amount==0 && arg[0]!='=')){
client_print(id, print_console, "[RPG mod]Ошибка: недопустимое количество.")
return PLUGIN_HANDLED
}
switch(arg[0]){
case '+': { //increases level and credits
for(i=0; i<pnum; i++){
g_p_level[players[i]] += amount
g_p_xp[players[i]] = as_sum_fn(g_p_level[players[i]], XP_START, XP_INC)
g_p_credits[players[i]] += amount * CREDITS_PER_LVL
g_p_progress[players[i]] = 0
set_default_lvl_upg(players[i])//will not set lvl if player has lvl > default lvl
data_save(players[i])
}
}
case '-': { //reduces level and credits
for(i=0; i<pnum; i++){
g_p_level[players[i]] -= amount
g_p_xp[players[i]] = as_sum_fn(g_p_level[players[i]], XP_START, XP_INC)
g_p_credits[players[i]] -= amount * CREDITS_PER_LVL
g_p_progress[players[i]] = 0
if(g_p_credits[players[i]] < 0)
force_drop_upgrades(players[i])
if(g_p_credits[players[i]] < 0)
g_p_level[players[i]] = 0 //will reset to default in set_default_lvl_upg
set_default_lvl_upg(players[i])//will not set lvl if player has lvl > default lvl
data_save(players[i])
}
}
case '=': { //set level and credits (all previous upg sell penalty is gone)
for(i=0; i<pnum; i++){
g_p_level[players[i]] = amount
g_p_xp[players[i]] = as_sum_fn(g_p_level[players[i]], XP_START, XP_INC)
g_p_credits[players[i]] = amount * CREDITS_PER_LVL
g_p_progress[players[i]] = 0
for(j=0; j<MAX_UPGS; j++)
g_p_credits[players[i]] -= as_sum_fn(g_p_upg[players[i]][j], g_upg_sp[j], g_upg_ip[j])
if(g_p_credits[players[i]] < 0)
force_drop_upgrades(players[i])
set_default_lvl_upg(players[i])//will not set lvl if player has lvl > default lvl
data_save(players[i])
}
}
default: {
client_print(id, print_console, "[RPG mod]Error: invalid 2nd argument - must be - or + or = ")
return PLUGIN_HANDLED
}
}
read_args(args, 63)
get_user_name(id, name, 31)
log_amx("ADMIN %s used cmd [ amx_rpg_lvl %s ], affected players: %d", name, args, pnum)
client_print(0, print_chat, "ADMIN %s: [level change: %s], affected players: %d", name, args, pnum)
return PLUGIN_HANDLED
У меня стоит рпг мод
Код отвечает за то, что админ может изменять левел командой amx_rpg_lvl nick -/+/= число
Может ли кто либо помочь сделать меню, чтобы при написании blablamenu появлялось меню со списком игроков на сервере и при выборе игрока выполнялась команда amx_rpg_lvl выбранныйигрок минус (определить сколько уровней у игрока и отнять их всех). Неудобно обнулять левел нечестным игрокам через команду в консоли, часто ники длинные. Буду благодарен. Мне кажется, даже не нужно будет задействовать верхний код, просто при выборе игрока выполняется данная команда с определеннием уровня и отнятием его
user2 = amx_rpg_lvl user2 - (число = определение уровня игрока)