Статус темы:
Закрыта.
  1. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    Всем привет, не могу понять как сделать перезагрузку LVL консольной командой, т.е. чтобы я не заходил каждый раз не убирал и не возвращал игроку уровень, чтобы он мог снова прокачку себе новую попробовать. Пробовал консольными командами сервера, но че то хрень какая то получилась. может можно сделать как то красивее?
     

    Вложения:

    • rpg_mod.rar
      Размер файла:
      16 КБ
      Просмотров:
      12
  2. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    Это какими?
     
  3. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., как то так
    Код:
    
    public reset_lvl_admin(id)
    {
        new playername[33]
       
        get_user_name(id, playername, 32)
    
        server_cmd("^"amx_rpg_lvl %s - %d^";^"wait^";^"wait^";^"wait^";^"amx_rpg_lvl %s + %d^^", playername, g_p_level[id])
    }
     
  4. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    Таким образом делал?
    amx_rpg_lvl <@all|@t|@ct|#userid|name> <+|=|-> <amount>
    Пример:
    amx_rpg_lvl <MakapoH.> <=> <0>
     
  5. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Нет ты меня не понял, этой командой можно лвл выдавать и забирать, а надо команду которая будет забирать лвл и через секунду его возвращать

    Думаю рыть отсюда надо, только не пойму что и куда
    Код:
    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
            }
        }
       
        return PLUGIN_HANDLED
    }
     
  6. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    Лично я по изначальному описанию проблемы не понял, что тебе нужно было.
    Проверь
     

    Вложения:

    • rpg_mod.sma
      Размер файла:
      82 КБ
      Просмотров:
      1
  7. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Не ты меня не понял, вообщем разрисую тебе систему всю,
    Игрок зарабатывает опыт, когда опыт доходит до 100%, он получает 1 LVL и соответственно получает 10 кредитов, и так у игрока допустим 3000 ЛВЛ и 30000 кредитов он потратил уже, но потратил как-то не так или хочет прокачаться по другому(т.е. потратить). Но чтобы ему Заново получить его кредиты, он зовет гл.админа чтобы тот ему лвл перезагрузил, т.е. админ берет и пишет amx_rpg_lvl "MakapoH." "=" "0" после пишет amx_rpg_lvl "MakapoH." "=" "3000" и игроку возвращается его ЛВЛ с его 30000 кредитами. А надо команду которая будет только для админа и он мог сам себе перезагрузить лвл, который напишет например say /reloadlvl и произойдут те же действия что и выполнил гл.админ, как я описал выше
     
  8. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    Аааа, теперь понятно
    А зачем только для Админа команда?
    Может проще сделать её для каждого игрока, чтобы он сам перезагружал свои уровни? Если ему это необходимо.
     
  9. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Можно и просто для игрока
     
  10. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    По идее должно воркать
     

    Вложения:

    • rpg_mod.sma
      Размер файла:
      82,8 КБ
      Просмотров:
      1
  11. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., эм.. кредиты не перезагружаются а умножаются на кол-во кредитов которое дается за 1 лвл
     
  12. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской

    Вложения:

    • rpg_mod.sma
      Размер файла:
      82,7 КБ
      Просмотров:
      1
    boss_ex нравится это.
  13. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Неа, он не обнуляет кредиты вообще, а пред. плагин не обнулял и возвращал с умножением а просто умножал
     
  14. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Вообщем сделал вот так вроде норм работает но надо тестировать еще
     
  15. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Как сделать ограничение чтобы команда использовалась раз в карту?
     
  16. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
    @boss_ex, Булевую переменную юзай
     
    boss_ex нравится это.
  17. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    @MakapoH., Типо вот так?
    Код:
    new bool: g_reload[33];
    public plugin_init()
    {
           register_plugin(PLUGIN, VERSION, AUTHOR);
           register_clcmd("say /reloadlvl", "fnRestartLevel");
    }
    
    public fnRestartLevel(id)
    {
           if(g_reload[id])
           {
                   client_print(id, print_chat, "Получить USP можно только 1 раз за карту");
                   return;
           }
        g_p_credits[id] = 0
        force_drop_upgrades(id)
        set_default_lvl_upg(id)//will not set lvl if player has lvl > default lvl
           
        g_p_credits[id] = g_p_level[id] * CREDITS_PER_LVL
        data_save(id)
        g_reload[id] = true;
    }
    
     
  18. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    654
    Симпатии:
    241
    Пол:
    Мужской
  19. boss_ex Пользователь

    Регистрация:
    09.06.16
    Сообщения:
    84
    Симпатии:
    14
    Пол:
    Мужской
    Спасибо, тему можно закрывать.
     
Статус темы:
Закрыта.