Русское сообщество по скриптингу

Блокировка отброса игрока

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Блокировка отброса игрока

Сообщение Freeman74 » 29 июл 2016, 03:34

Доброго времени суток.
Возник такой вопрос, как заблокировать отталкивание игрока при получении урона.
Пробовал такой вариант:
Код: Выделить всё
#define linux_diff_player 5
#define m_PlayerPainShock 108
native jbe_get_user_team(iTeam);

public plugin_init() RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Player", true);
public Ham_TakeDamage_Player(iVictim, iInflictor, iAttacker, Float:fDamage, iBitDamage)
    if(jbe_get_user_team(iVictim) == 2) set_pdata_float(iVictim, m_PlayerPainShock, 1.0, linux_diff_player);

Он работает, но только сидя, как можно заблокировать у стоящего игрока?

Добавлено спустя 30 минут 17 секунд:
Спасибо, сообразил сам, может кому пригодится:
Код: Выделить всё
#define linux_diff_player 5
#define m_PlayerPainShock 108
native jbe_get_user_team(iTeam);
new 
g_fUserVelocity[33][3];

public 
plugin_init()
{
    
RegisterHam(Ham_TakeDamage"player""Ham_TakeDamagePre_Player"false);
    
RegisterHam(Ham_TakeDamage"player""Ham_TakeDamagePost_Player"true);
}

public 
Ham_TakeDamagePre_Player(iVictimiInflictoriAttackerFloat:fDamageiBitDamage) if(jbe_get_user_team(iVictim) == 2pev(iVictimpev_velocityg_fUserVelocity[iVictim]);
public 
Ham_TakeDamagePost_Player(iVictimiInflictoriAttackerFloat:fDamageiBitDamage)
{
    if(
jbe_get_user_team(iVictim) == 2)
    {
        
set_pdata_float(iVictimm_PlayerPainShock1.0linux_diff_player);
        
set_pev(iVictimpev_velocityg_fUserVelocity[iVictim]);
    }
Контакты:
Вконтакте
Аватара пользователя
Freeman74
 
Сообщения: 126
Зарегистрирован: 02 окт 2014, 15:27
Благодарил (а): 43 раз.
Поблагодарили: 16 раз.
Языки программирования: Counter-Strike 1.6

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 7