Добрый день, остановился на одном баге в вампирике, так как я не особо силён в 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);
}