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

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
78
Реакции
7
BalbuR, поигрался я тут с кодом, и без этого боты доходят до примари атак и постфрейма, заметил, что оставил проверку на левую/правую руку перед вызовом выброса гильзы, поэтому сделал так:

Код:
if(is_user_bot(pPlayer))
        {
            UTIL_EjectBrass(pPlayer, WeaponModelShell, 1, 17.0, 11.0, -10.0, 25.0, random_float(-65.0, -70.0), random_float(85.0, 90.0));
        }
        else if(gl_bitUserLeftHanded)
        {
            UTIL_EjectBrass(pPlayer, WeaponModelShell, 1, 17.0, -11.0, -10.0, 25.0, random_float(65.0, 70.0), random_float(85.0, 90.0));
        }
        else
        {
            UTIL_EjectBrass(pPlayer, WeaponModelShell, 1, 17.0, 11.0, -10.0, 25.0, random_float(-65.0, -70.0), random_float(85.0, 90.0));
        }
Однако, почему-то не сработало, сменил твою мессагу на старый msgBrass, все заработало, но не горю желанием держать отдельный сток на 30 строк ради такой мелочи у ботов, В чем может быть дело?
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
solo target мессага

в 36 строке поменяй
PHP:
engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, vecOrigin, pPlayer);
->
PHP:
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
 
Сообщения
78
Реакции
7
BalbuR, Спасибо, все заработало!
24 Июл 2024
Пока я прописывал докуп кастомных патронов для оружия из плагина, снова заметил что weaponlist'ы двух стволов из плагина конфликтуют, если у них одинаковый референсный ствол. Лист будет работать только у того оружия, что находится выше в plugins.ini. Проблема пропадает, если на одном из орудий закомментировать использование кастомных патронов, чтобы он юзал калибр референсного оружия, и просто подсталял нужный худ калибра. Но это не панацея, ведь в таком случае, не более двух стволов от одного референса будут работать корректно.
24 Июл 2024
Код выглядит так:

Код:
stock UTIL_WeaponList(const iDest, const pReceiver, const pItem, const WeaponReference[], bool:Custom, szWeaponName[MAX_NAME_LENGTH] = "", const iPrimaryAmmoType = -2, iMaxPrimaryAmmo = -2, iSecondaryAmmoType = -2, iMaxSecondaryAmmo = -2, iSlot = -2, iPosition = -2, iWeaponId = -2, iFlags = -2)
{
    if(szWeaponName[0] == EOS)
        rg_get_iteminfo(pItem, ItemInfo_pszName, szWeaponName, charsmax(szWeaponName))

    static iMsgId_Weaponlist; if(!iMsgId_Weaponlist) iMsgId_Weaponlist = get_user_msgid("WeaponList");

    message_begin(iDest, iMsgId_Weaponlist, .player = pReceiver);
    write_string(Custom ? szWeaponName : WeaponReference);
    write_byte((iPrimaryAmmoType <= -2) ? GetWeaponAmmoType(pItem) : iPrimaryAmmoType);
    write_byte((iMaxPrimaryAmmo <= -2) ? rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo1) : iMaxPrimaryAmmo);
    write_byte((iSecondaryAmmoType <= -2) ? get_member(pItem, m_Weapon_iSecondaryAmmoType) : iSecondaryAmmoType);
    write_byte((iMaxSecondaryAmmo <= -2) ? rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo2) : iMaxSecondaryAmmo);
    write_byte((iSlot <= -2) ? rg_get_iteminfo(pItem, ItemInfo_iSlot) : iSlot);
    write_byte((iPosition <= -2) ? rg_get_iteminfo(pItem, ItemInfo_iPosition) : iPosition);
    write_byte((iWeaponId <= -2) ? rg_get_iteminfo(pItem, ItemInfo_iId) : iWeaponId);
    write_byte((iFlags <= -2) ? rg_get_iteminfo(pItem, ItemInfo_iFlags) : iFlags);
    message_end();
}
Выставление разных для двух винтовок значений id кастомных патронов не помогает. Не понимаю, чем может быть дело?
 
Сообщения
78
Реакции
7
Причем я заметил, что ствол с неработающим листом (где появляется лист оригинального ствола) успешно проходит булевую Custom, выставляя значения secondary ammo (из-за чего появлялась вторая шкала патронов, пока я это не убрал), но худ оружия и патронов он будто обходит стороной.
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
сложно
видео в студию
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
зачем -2? почему просто на custom не проверять
конструкцию какую-то построил непонятную
не проще ли в spawn'е оружия выставлять данные в rg_iteminfo и когда надо доставать инфу по веапонлисту?
 
Сообщения
78
Реакции
7
BalbuR, В общем, покопался в коде. Оригинал вызова был таким:

Код:
public Ham_CBasePlayerWeapon__AddToPlayer_Post(const pItem, const pPlayer)
{
    if(IsCustomWeapon(pItem, WeaponUnicalIndex))
        UTIL_WeaponList(MSG_ONE, pPlayer, pItem, true);
    else
        UTIL_WeaponList(MSG_ONE, pPlayer, pItem, false);
}
Решил подправить так:


Код:
stock UTIL_WeaponList(const iDest, const pReceiver, const pItem, const WeaponList[])
{
    static iMsgId_Weaponlist; if(!iMsgId_Weaponlist) iMsgId_Weaponlist = get_user_msgid("WeaponList");

    message_begin(iDest, iMsgId_Weaponlist, .player = pReceiver);
    write_string(WeaponList);
    write_byte(GetWeaponAmmoType(pItem));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo1));
    write_byte(get_member(pItem, m_Weapon_iSecondaryAmmoType));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo2));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iSlot));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iPosition));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iId));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iFlags));
    message_end();
}
И так:


Код:
public Ham_CBasePlayerWeapon__AddToPlayer_Post(const pItem, const pPlayer)
{
    if(IsCustomWeapon(pItem, WeaponUnicalIndex))
        UTIL_WeaponList(MSG_ONE, pPlayer, pItem, WeaponListDir);
}
И казалось бы все классно, У каждой из винтовок свой WeaponList, однако в таком случае оригинальная AWP использует лист оружия из плагина, причем в добавок AWP берет себе калибр(букально ammotype) и дефолтное количество патронов винтовки из плагина.
25 Июл 2024
После этого мне стало понятно, почему Tерке оформил функцию weaponlist таким образом. Копаясь дальше, я кажется понял в чем было дело, приоритетный плагин запускал оригинальную проверку на кастомный ствол, указанную выше, если var_impulse не подходил, то посылался оригинальный лист. Это касалось и менее приоритетного в plugins.ini оружия с другим импульсом. Теста ради решил сделать так:

Код:
public Ham_CBasePlayerWeapon__AddToPlayer_Post(const pItem, const pPlayer)
{
    if(IsCustomWeapon(pItem, WeaponUnicalIndex))
        UTIL_WeaponList(MSG_ONE, pPlayer, pItem, WeaponListDir);
    else if(!IsCustomWeapon(pItem, 1550))//Импульс другого оружия
        UTIL_WeaponList(MSG_ONE, pPlayer, pItem, WeaponReference);
}
И все заработало
 
Последнее редактирование:
Сообщения
78
Реакции
7
И в этом моменте я вообще ничего не понял, ранее у оружия с другим кодом, но в аналогичной ситуации с несколькими орудиями с одним референс-стволом такого и в помине не могло произойти. Я уже пеняю на то что в стоках и функциях очень часто объявляются константы, в том числе для айди игрока и предметов. Хоть и сильно сомневаюсь, но от этого могут быть проблемы в плагине и в инклуде с персональными стоками?
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
все иконки худа по оружию задаются веапонлистом и имеют чисто виуальный характер
26 Июл 2024
И в этом моменте я вообще ничего не понял, ранее у оружия с другим кодом, но в аналогичной ситуации с несколькими орудиями с одним референс-стволом такого и в помине не могло произойти. Я уже пеняю на то что в стоках и функциях очень часто объявляются константы, в том числе для айди игрока и предметов. Хоть и сильно сомневаюсь, но от этого могут быть проблемы в плагине и в инклуде с персональными стоками?
о каких стоках и константах идет речь
 
Сообщения
78
Реакции
7
Сделал так:

Код:
public Ham_CBasePlayerWeapon__AddToPlayer_Post(const pItem, const pPlayer)
{
    UTIL_WeaponList(MSG_ONE, pPlayer, pItem);
}
Код:
stock UTIL_WeaponList(const iDest, const pReceiver, const pItem, szWeaponName[MAX_NAME_LENGTH] = "")
{
    rg_get_iteminfo(pItem, ItemInfo_pszName, szWeaponName, charsmax(szWeaponName))

    static iMsgId_Weaponlist; if(!iMsgId_Weaponlist) iMsgId_Weaponlist = get_user_msgid("WeaponList");

    message_begin(iDest, iMsgId_Weaponlist, .player = pReceiver);
    write_string(szWeaponName);
    write_byte(GetWeaponAmmoType(pItem));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo1));
    write_byte(get_member(pItem, m_Weapon_iSecondaryAmmoType));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo2));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iSlot));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iPosition));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iId));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iFlags));
    message_end();
}
Все заработало.
26 Июл 2024
BalbuR, к примеру, о таких:

Код:
stock UTIL_WeaponList(const iDest, const pReceiver, const pItem, szWeaponName[MAX_NAME_LENGTH] = "")
{
    rg_get_iteminfo(pItem, ItemInfo_pszName, szWeaponName, charsmax(szWeaponName))

    static iMsgId_Weaponlist; if(!iMsgId_Weaponlist) iMsgId_Weaponlist = get_user_msgid("WeaponList");

    message_begin(iDest, iMsgId_Weaponlist, .player = pReceiver);
    write_string(szWeaponName);
    write_byte(GetWeaponAmmoType(pItem));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo1));
    write_byte(get_member(pItem, m_Weapon_iSecondaryAmmoType));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iMaxAmmo2));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iSlot));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iPosition));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iId));
    write_byte(rg_get_iteminfo(pItem, ItemInfo_iFlags));
    message_end();
}
26 Июл 2024
Но, похоже, проблем с ними нет все правильно
 
Сообщения
78
Реакции
7
Интересно, а паттерны динамичного освещения в SVC_LIGHTSTYLE работают?
Делаю так и не работает:

Код:
message_begin(MSG_ONE_UNRELIABLE, SVC_LIGHTSTYLE, _, ID_NIGHT_VISION);
    write_byte(9);
    write_string("aaaaaaaazzzzzzzz");
    message_end();
 
Статус
В этой теме нельзя размещать новые ответы.

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

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