Живой будучи мертвым

Сообщения
8
Реакции
0
Здравствуйте, подскажите пожалуйста.
Я воскрешаю мертвого игрока, присваиваю ему pev_deadflag = DEAD_RESPAWNABLE
и в это же время меняю ему модель через cs_set_user_model, делаю аналог плагина (призраков)
Все нормально, игрок воскрешается, но модель игрока зависает в воздухе на спауне, а сам он бегает в это время по карте и его не видно.

и так только тогда, когда присваиваю pev_deadflag = DEAD_RESPAWNABLE

Как это исправить?
 
Сообщения
2,751
Реакции
3,017
Помог
61 раз(а)
Наверняка необходимо не только флаг поставить? И ещё некоторые параметры выставить. Подробнее смотри в нативах и стоках. Допустим в каждом почти из модулей есть функция респавна
 
Сообщения
8
Реакции
0
wopox1337, спавн происходит через Ham_CS_RoundRespawn, какие еще параметры нужны, чтобы игрок мог играть, только учитывался как мертвый?
 
Сообщения
216
Реакции
1,303
Помог
5 раз(а)
grifons, "только учитывался как мертвый?" как понять ? чтобы в таблице показывало что игрок мертв ?
 
Сообщения
8
Реакции
0
Adidasman, ну смотри, игрок умер, у него есть возможность побегать по карте, чтобы он не скучал, но только мертвым, в табе я присвоил ему "dead", но проверка is_user_alive без pev_deadflag = DEAD_RESPAWNABLE вернет true т.к. игрок жив. Если этот флаг присвоить и воскресить игрока с помощью Ham_CS_RoundRespawn, то его модель зависнет в воздухе на спауне, а сам он будет спокойно играть (бегать по карте) невидимым. Как это исправить?
 
Сообщения
8
Реакции
0
C++:
public test(victim)
{
    if(!g_bRoundEnd)
    {
        set_member(victim, m_iClientHideHUD, 0);
        set_member(victim, m_iHideHUD, HUD_HIDE_FLAGS);
        
        set_bit(g_bUserDead, victim);
        
        // --| Respawn Player at Deadbody
        ExecuteHamB(Ham_CS_RoundRespawn, victim);
        
        // --| Set The Victims Flags to DEAD_RESPAWNABLE
        set_entvar(victim, var_deadflag, DEAD_RESPAWNABLE);
        
        rg_set_user_model(victim, g_szPlayerModel[victim]);
        rg_remove_all_items(victim);
        
        set_entvar(victim, var_solid, SOLID_NOT);
        
        message_begin(MSG_ALL, g_iScoreBoard, _, 0);
        write_byte(victim);
        write_byte(1);
        message_end();       
        
        rg_set_rendering(victim, kRenderFxDistort, 0.0, 0.0, 0.0, kRenderTransAdd, 80.0);
        
        Show_Dead_Settings_Menu(victim);
    }
}
 
Сообщения
8
Реакции
0
Adidasman, Когда умераешь, открывается меню, где можно выбрать "воскреснуть как мертвый"
 
Сообщения
216
Реакции
1,303
Помог
5 раз(а)
grifons, "Когда умераешь" а это когда ? в killed или где? почему все пассатижами надо выдирать информацию чтобы помочь в мега приватном плагине ?
 
Сообщения
8
Реакции
0
Adidasman,
Код:
public Ham_PlayerKilled_Post(victim, attacker, shouldgib)
{   
    if (!is_user_connected(victim))
    {
        return;
    }

    if(!g_bRoundEnd)
    {

        if(!get_bit(g_bUserDead, victim) && !get_bit(g_bIsNoMore, victim))
        {
            Show_Dead_Menu(victim);
            get_user_model(victim, g_szPlayerModel[victim], charsmax(g_szPlayerModel));
        }
    }
}
 
Сообщения
216
Реакции
1,303
Помог
5 раз(а)
grifons, в общем, в киллед, сделать задержку 3 секунды (set_task использовать)
 
Сообщения
8
Реакции
0
Разобрался в чем проблема была.
Не хватало DLLFunc_Think.
Но возникла другая проблема, если добавляю DLLFunc_Think, то var_deadflag (DEAD_RESPAWNABLE) не присваивается и игрок становиться как будто живым.
Как это исправить?
17 Дек 2017
т.е. is_user_alive возвращает true
 
Сообщения
43
Реакции
8
Помог
3 раз(а)
grifons, приложи код как решение. А сломать проверку is_user_alive можно через pev_deadflag.
 

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

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