rg_give_item

Сообщения
78
Реакции
1
Приветствую, возникла проблема при написании плагина:
C++:
public SetUserParameters(id)
{
    new Data[PlayerParameters], Float: param1, param2;
    for (new iParam; iParam < ArraySize(Ar_PlayerParameters); iParam++)
    {
        ArrayGetArray(Ar_PlayerParameters, iParam, Data);

        if (!(get_user_flags(id) & read_flags(Data[INDEX])))
            continue;

        param1 = str_to_float(Data[HEALTH]);
        if (param1 > 0.0)
            set_entvar(id, var_health, param1);

        param1 = str_to_float(Data[ARMOR]);
        if (param1 > 0.0)
            set_entvar(id, var_armorvalue, param1);

        param2 = str_to_num(Data[HAS_VIP])
        if (param2)
            set_member(id, m_bIsVIP, true);

        param2 = str_to_num(Data[FIRE_GRENADE]);
        if (param2 > 0)
        {
            if (rg_get_user_bpammo(id, WEAPON_HEGRENADE) > 0)
                rg_set_user_bpammo(id, WEAPON_HEGRENADE, param2);

            else
            {
                rg_give_item(id, "weapon_hegrenade");

                if (param2 > 1)
                    rg_set_user_bpammo(id, WEAPON_HEGRENADE, param2);
            }
        }

        param2 = str_to_num(Data[FROST_GRENADE]);
        if (param2 > 0)
        {
            if (rg_get_user_bpammo(id, WEAPON_FLASHBANG) > 0)
                rg_set_user_bpammo(id, WEAPON_FLASHBANG, param2);

            else
            {
                rg_give_item(id, "weapon_flashbang");

                if (param2 > 1)
                    rg_set_user_bpammo(id, WEAPON_FLASHBANG, param2);
            }
        }

        g_iPlayerData[id][JumpMaxValue] = str_to_num(Data[JUMPS_COUNT]);

        param2 = Data[INDEX_MODEL];
        zp_override_user_model(id, Data[NAME_MODEL], param2);

        break;
    }
}
Данный паблик я вызываю при помощи RequestFrame, всё работает, кроме выдачи гранат, единственный раз когда они выдаются это при заходе на сервер, и как только игрок снова спавниться, то они не выдаются, не подскажите в чёт может заключатся проблема?
 
Сообщения
140
Реакции
24
Помог
2 раз(а)
C:
- break;
It seems like the issue might be related to how you handle the grenades in your SetUserParameters function. Specifically, the code for issuing grenades is within a loop that iterates over the player parameters, and the loop is terminated with a break statement after processing the first set of parameters.

If still not working try to add debug in code and monitoring what is going on there
 
Сообщения
78
Реакции
1
я не много изменил эту функцию:
C++:
public SetUserParameters(id)
{
    new Data[PlayerParameters], Float: param1, param2 = -1;
    for (new iParam; iParam < ArraySize(Ar_PlayerParameters); iParam++)
    {
        ArrayGetArray(Ar_PlayerParameters, iParam, Data);
        if (get_user_flags(id) & read_flags(Data[INDEX]))
        {
            param2 = iParam;
            break;
        }
    }

    if (param2 != -1)
    {
        ArrayGetArray(Ar_PlayerParameters, param2, Data);

        param1 = str_to_float(Data[HEALTH]);
        if (param1 > 0.0)
            set_entvar(id, var_health, param1);

        param1 = str_to_float(Data[ARMOR]);
        if (param1 > 0.0)
            set_entvar(id, var_armorvalue, param1);

        param2 = str_to_num(Data[HAS_VIP])
        if (param2)
            set_member(id, m_bIsVIP, true);

        param2 = str_to_num(Data[FIRE_GRENADE]);
        if (param2 > 0)
        {
            if (rg_get_user_bpammo(id, WEAPON_HEGRENADE) > 0)
                rg_set_user_bpammo(id, WEAPON_HEGRENADE, param2);

            else
            {
                rg_give_item(id, "weapon_hegrenade");

                if (param2 > 1)
                    rg_set_user_bpammo(id, WEAPON_HEGRENADE, param2);
            }
        }

        param2 = str_to_num(Data[FROST_GRENADE]);
        if (param2 > 0)
        {
            if (rg_get_user_bpammo(id, WEAPON_FLASHBANG) > 0)
                rg_set_user_bpammo(id, WEAPON_FLASHBANG, param2);

            else
            {
                rg_give_item(id, "weapon_flashbang");

                if (param2 > 1)
                    rg_set_user_bpammo(id, WEAPON_FLASHBANG, param2);
            }
        }

        g_iPlayerData[id][JumpMaxValue] = str_to_num(Data[JUMPS_COUNT]);

        param2 = Data[INDEX_MODEL];
        zp_override_user_model(id, Data[NAME_MODEL], param2);
    }
}
и выявил такую вещь, когда в конфиге значение больше 2, то гранаты не выдаются, если значение равно или меньше 2 то всё выдаётся нормально, и мне так кажется, что если поменять паблик на тот который был, то будет такая же проблема, именно с колличеством выдаваемых гранат
30 Ноя 2023
а нет, со старой функцией всё так же не работает выдача вообще
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу