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

    Регистрация:
    22.04.15
    Сообщения:
    234
    Симпатии:
    51
    Пол:
    Мужской
    Доброй ночи, остановился на одном баге в вампирике, так как я не особо силён в pawn, прошу вашей помощи.
    Суть бага в следующем: Почему-то не работает квар на максимально возможное хп/ар (g_pcvar_max_ap). Хп/ар всегда равно 100 - даже если менять значение в данном кваре - бестолку, пробовал разные комбинации, даже оптимизировал этот участок - смотрел по коду неугомона, всё та же беда, решил вернуть то, что было в начале, возможно я что-то не так делаю. Даже выдача хп/ap при респауне не работает, если указывать квар g_pcvar_max_ap: Пример с бронёй.
    cs_set_user_armor(id, get_pcvar_num(g_pcvar_max_ap), CS_ARMOR_VESTHELM);
    А вот так будет работать:
    cs_set_user_armor(id, 250, CS_ARMOR_VESTHELM); - становиться 250 брони при респауне. Но при убийстве игроков (Срабатывает вампирик - оно обнуляет данное значение до 100). Пробовал разные комбинации - бестолку, может быть здесь есть знающие люди. Если что могу предоставить исходник от мода где эта функция используется.

    Код:
    public client_death(killer, victim, wpnindex, hitplace, TK) {
        if(    victim == killer
        ||    !( 1 <= killer <= gMaxClients)
        ||    !is_user_alive(killer)
        ||    cs_get_user_team(victim) == cs_get_user_team(killer))
        {
            return;
        }
        if (hitplace == HIT_HEAD)
        {
            if (wpnindex == CSW_KNIFE)
            {
                g_hp_add = get_pcvar_num(g_pcvar_knife_hs_hp_add);
                g_ap_add = get_pcvar_num(g_pcvar_knife_hs_ap_add);
            }
            else
            {
                g_hp_add = get_pcvar_num(g_pcvar_hs_hp_add);
                g_ap_add = get_pcvar_num(g_pcvar_hs_ap_add);
            }
        }
        else
        {
            if (wpnindex == CSW_KNIFE)
            {
                g_hp_add = get_pcvar_num(g_pcvar_knife_hp_add);
                g_ap_add = get_pcvar_num(g_pcvar_knife_ap_add);
            }
            else if (wpnindex == CSW_HEGRENADE)
            {
                g_hp_add = get_pcvar_num(g_pcvar_grenade_hp_add);
                g_ap_add = get_pcvar_num(g_pcvar_grenade_ap_add);
            }
            else
            {
                g_hp_add = get_pcvar_num(g_pcvar_hp_add);
                g_ap_add = get_pcvar_num(g_pcvar_ap_add);
            }
        }
       
        g_max_hp = get_pcvar_num(g_pcvar_max_hp);
        g_killer_hp = get_user_health(killer);
        g_killer_hp += g_hp_add;
       
        g_max_ap = get_pcvar_num(g_pcvar_max_ap);
        g_killer_ap = get_user_armor(killer);
        g_killer_ap += g_ap_add;
       
        if (g_killer_hp > g_max_hp)
        {
            g_killer_hp = g_max_hp;
        }
       
        if (g_killer_ap > g_max_ap)
        {
            g_killer_ap = g_max_ap;
        }
       
        set_user_health(killer, g_killer_hp);
        set_user_armor(killer, g_killer_ap);
           
        set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1);
        ShowSyncHudMsg(killer, g_MsgSync,"Регенерация +%d Жизней, +%dБрони", g_hp_add, g_ap_add);
       
        new iColor[3], Float:flTime = get_pcvar_float(g_pCvarFadeTime);
        iColor = get_color(hitplace == HIT_HEAD ? g_pCvarColorHs : g_pCvarColor);
        UTIL_ScreenFade(killer, iColor, flTime, flTime, 75);
    } 
     
  2. xopoIIIuu Пользователь

    Регистрация:
    22.04.15
    Сообщения:
    234
    Симпатии:
    51
    Пол:
    Мужской
    Вопрос решён, тему закрываю. Эх... моя невнимательность, квар слишком длинный, вот оно и не работало) Сократил - работает, буду теперь знать.
     
Статус темы:
Закрыта.