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

Изменить высоту прыжка  [Решено]

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

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

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

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

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

Re: Изменить высоту прыжка

Сообщение D34by » 02 май 2017, 21:16

NEoMASTERR писал(а):если зажать пробел случается бхоп. Кроме как pev_oldbuttons его никак не убрать?

Ham_Player_Jump вызывается синком, пока зажата кнопка, логично что нужен чек на зажатие
Код: Выделить всё
// If this isn't the first frame pressing the jump button, break out.
    if (!(m_afButtonPressed & IN_JUMP))
    {
        // don't pogo stick
        return;
    
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Изменить высоту прыжка

Сообщение NEoMASTERR » 02 май 2017, 21:58

Хорошо, а как вернуть замедление после прыжка?
На колёсико уж очень хорошо стало прыгаться даже если прыжок стандартный
Код: Выделить всё
f[2] = 260.328155
set_pev
(id, pev_velocity, f)

Если не трогать pev_velocity то всё норм
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Изменить высоту прыжка  [Решено]

Сообщение Garey » 02 май 2017, 22:25

NEoMASTERR писал(а):Хорошо, а как вернуть замедление после прыжка?
На колёсико уж очень хорошо стало прыгаться даже если прыжок стандартный
Код: Выделить всё
f[2] = 260.328155
set_pev
(id, pev_velocity, f)

Если не трогать pev_velocity то всё норм

как раз то что вы меняли доэтого (fuser2) отвечает за замедление после прыжка попробуйте поставить стандартное 1315.7894

Добавлено спустя 3 минуты 27 секунд:
кстати вот такая формула (возможная) откуда это число от Lt.RAT:
Код: Выделить всё
///Lt.RAT`s wild guess: pmove->fuser2 = 1000*(2*sqrt(72000)/(800*1.04) + 2*sqrt(72000)/800); 

Думаю сможете подставить нужную величину в формулу чтобы получить нужное число :) либо методом тыка :D
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Re: Изменить высоту прыжка

Сообщение NEoMASTERR » 02 май 2017, 22:36

И правда, работает, не уверен в правильности расположения, но работает
Код: Выделить всё
public ham_jump(id)
{
    if (pev(id, pev_oldbuttons) & IN_JUMP) return HAM_IGNORED        // antibhop
    if (pev(id, pev_flags) & FL_ONGROUND)
    {
        set_pev(id, pev_fuser2, 1315.7894)
        static Float:f[3]; pev(id, pev_velocity, f)
        f[2] = 260.328155
        set_pev
(id, pev_velocity, f)
    }
    
    return HAM_IGNORED
}


Код: Выделить всё
///Lt.RAT`s wild guess: pmove->fuser2 = 1000*(2*sqrt(72000)/(800*1.04) + 2*sqrt(72000)/800);

800 я так понимаю гравитация?

Как то я всё равно не совсем уверен в этой конструкции. В первом кадре стоит флаг FL_ONGROUND и velocity по оси Z равна нулю, т.е. я на земле и пытаюсь прыгнуть. Видимо что то сбивается когда в этот момент присвоить ускорение и получается замедление после падения не учитывается. Приходится его вручную прописывать.
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Изменить высоту прыжка

Сообщение Garey » 02 май 2017, 23:03

потестировал, вроде при любых значениях vel[z] этот fuser2 нормальный, вот вам формула для более точного подсчета vel[z]:
Код: Выделить всё

new Float
:height = 45.0; // Высота прыжка в юнитах
velocity[2] = floatsqroot( 2.0 * 800.0 * height ); 
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Пред.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13