Свечение оружия в руках

Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
Приветствую всех. Подскажите пожалуйста, можно ли реализовать свечение оружия (glow) в руках игрока. Интересует как viewmodel, так и weaponmodel, т.е. как при виде от первого лица, так и когда на игрока смотрят со стороны. Я раньше вроде бы видел подобное (в читах), но понятия не имею, можно ли реализовать такое средствами AMXX.
 
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
wopox1337, мы говорим не о костылях)))))))))))))))))))))))))))))
 
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
fl0wer, Спасибо, просто было интересно. Модулем мне и не надо. Нужно ставить на дефолтные пухи. Но если нет варианта решить это средствами amxx (с костылями в адекватных пределах), то и в топку.
 
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
BlackSignature, да и на амхх можно. Есть неприятный баг с костями\блендингом, как пофиксить хз.
19 Дек 2018
Всем спасибо за лайки, можете расходиться.
 
Сообщения
25
Реакции
41
Помог
1 раз(а)
Приветствую всех. Подскажите пожалуйста, можно ли реализовать свечение оружия (glow) в руках игрока. Интересует как viewmodel, так и weaponmodel, т.е. как при виде от первого лица, так и когда на игрока смотрят со стороны. Я раньше вроде бы видел подобное (в читах), но понятия не имею, можно ли реализовать такое средствами AMXX.
Код:
public GlowWeapon(id) {
    if (!pev_valid(FakeWeaponID[id])) {     //If the fake weapon ID does not already exist for this player.
        FakeWeaponID[id] = fm_create_entity("info_target")  //Spawn a new entity to replace the original.
        if (!pev_valid(FakeWeaponID[id])) {      //If it failed, don't go any further.
            return
        } else {                                                //If it worked, set its basic properties.
            dllfunc(DLLFunc_Spawn,    FakeWeaponID[id])
            set_pev(FakeWeaponID[id],   pev_classname,  "FakeWeapon")
            set_pev(FakeWeaponID[id],   pev_movetype,    MOVETYPE_FOLLOW)
            set_pev(FakeWeaponID[id],   pev_aiment,            id)
        }
    }
    new weaponstr[31]
    pev(id,      pev_weaponmodel2,    weaponstr,  30)   //Store the name of the current weapon.        ( P_ )
    set_pev(id,     pev_weaponmodel2,    "")    //Remove the weapon from the players hands.  ( P_ )
    fm_entity_set_model(FakeWeaponID[id],         weaponstr)  //Apply the weapon stored above to our fake weapon
    set_pev(FakeWeaponID[id],   pev_renderfx,    kRenderFxGlowShell)   //Render Away!
    set_pev(FakeWeaponID[id],   pev_rendercolor,   {0.0, 200.0, 0.0}) //R, G, B
    set_pev(FakeWeaponID[id],   pev_rendermode,        kRenderNormal)
    set_pev(FakeWeaponID[id],   pev_renderamt,  50.0)                //Ammount/ShellSize
}
Взял >отсюда<
 

Вложения

Сообщения
144
Реакции
276
Помог
1 раз(а)
Rias, Конская нагрузка на сервер и клиент. Даже дефолтная p_ модель нагрузку дает, в зависимости от количества костей.
 
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
Rias, спасибо за рабочий вариант.

SISA, Подскажите пожалуйста, что вы имеете ввиду под конской нагрузкой.
 
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
SISA, Это я понял :) Меня интересует, чем именно она обуславливается? Создаём энтити, привязываем к игроку. В деплое оружия выставляем модель, в killed прячем (выставляем NULL_STRING). Что здесь конского? Шапки же на многих серверах есть. Принцип тот же.
 
Сообщения
2,713
Реакции
2,993
Помог
59 раз(а)
Подозреваю, что если оружие свичить часто - вся эта pev-конструкция из fakemeta будет постоянно дёргаться. +аттачи
 
Сообщения
144
Реакции
276
Помог
1 раз(а)
BlackSignature, Уже давно есть декомпилы кода в виде рехлдс, гемдлл, ксаша и части 1.6 клиента. Посмотри, какой там зашкварный код в работе любой аттачнутой модели. Движку надо просчитывать положение костей скелета и водить объект за скелетом игрока. То, что эта операция жрет тонну ресурсов на обеих сторонах, и к гадалке не ходи. И да, шапки тоже не кисло так поджирают.

Для эксперимента попробуй заспавнить 25-30 ботов в одной видимой локации, убери на клиенте вертикальную синхронизацию, поставь fps_овердрайв 1 и fps_max 1000 чтобы выдать максимум fps. Потом отбери у всех ботов p_ модель (pev_weaponmodel2, "") и посмотри на FPS и поставь модель элитов "p_elite.mdl" всем ботам. Увидишь существенное различие по FPSам. Можно тот же фокус провести на безвертоксных пустых моделях для полной чистоты эксперимента.

Если говорить про аттачнутую модель, то там ситуация усугубляется многократно и чем больше костей, тем больше будет нагрузка.

На пабликах, с картами в ограниченных локациях этот эффект заметен не сильно, в силу оптимизации самого игрового процесса. Если речь идет о каком-то мясце, где куча игроков видит кучу игроков, то там ситуация будет крайне печальная + надо учитывать, что любой glow дает двухкратный прирост видимых полигонов модели.
 
Сообщения
100
Реакции
-4
Код:
public GlowWeapon(id) {
    if (!pev_valid(FakeWeaponID[id])) {     //If the fake weapon ID does not already exist for this player.
        FakeWeaponID[id] = fm_create_entity("info_target")  //Spawn a new entity to replace the original.
        if (!pev_valid(FakeWeaponID[id])) {      //If it failed, don't go any further.
            return
        } else {                                                //If it worked, set its basic properties.
            dllfunc(DLLFunc_Spawn,    FakeWeaponID[id])
            set_pev(FakeWeaponID[id],   pev_classname,  "FakeWeapon")
            set_pev(FakeWeaponID[id],   pev_movetype,    MOVETYPE_FOLLOW)
            set_pev(FakeWeaponID[id],   pev_aiment,            id)
        }
    }
    new weaponstr[31]
    pev(id,      pev_weaponmodel2,    weaponstr,  30)   //Store the name of the current weapon.        ( P_ )
    set_pev(id,     pev_weaponmodel2,    "")    //Remove the weapon from the players hands.  ( P_ )
    fm_entity_set_model(FakeWeaponID[id],         weaponstr)  //Apply the weapon stored above to our fake weapon
    set_pev(FakeWeaponID[id],   pev_renderfx,    kRenderFxGlowShell)   //Render Away!
    set_pev(FakeWeaponID[id],   pev_rendercolor,   {0.0, 200.0, 0.0}) //R, G, B
    set_pev(FakeWeaponID[id],   pev_rendermode,        kRenderNormal)
    set_pev(FakeWeaponID[id],   pev_renderamt,  50.0)                //Ammount/ShellSize
}
Взял >отсюда<
Скиньте полный код
 

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

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