Скриптер
Участник
Пользователь
- Сообщения
- 91
- Реакции
- 141
- Помог
- 1 раз(а)
Всех приветствую, не думал что буду спрашивать помощь на форуме, но все же пришлось.
Впервые работаю с контроллерами и столкнулся с такой проблемой, что мне для плагина Sentry Guns нужно регулировать контроллеры в зависимости от того, куда смотрит сама пушка. В модели есть для этого контроллеры и вроде бы все окей, но, прочитав, как работает
Проблема в чем, в модели есть 3-4 контроллера, которые регулируются по осям но со значениями не 0-255, а например от -50 до 50. Значит мне нужно сделать так, чтобы -50 это было бы 0, а 50 это было бы 255. Значение 0 из модели, по коду это будет 127 (ну или 128, кому как удобнее), повозившись в калькуляторе, пришел к реализации такого кода.
Уважаемые знатоки, может быть есть какой либо другой вариант реализации данного кода, который на много легче/удобнее?
Впервые работаю с контроллерами и столкнулся с такой проблемой, что мне для плагина Sentry Guns нужно регулировать контроллеры в зависимости от того, куда смотрит сама пушка. В модели есть для этого контроллеры и вроде бы все окей, но, прочитав, как работает
var_controller
, я узнал, что туда можно вписывать значения от 0 до 255Проблема в чем, в модели есть 3-4 контроллера, которые регулируются по осям но со значениями не 0-255, а например от -50 до 50. Значит мне нужно сделать так, чтобы -50 это было бы 0, а 50 это было бы 255. Значение 0 из модели, по коду это будет 127 (ну или 128, кому как удобнее), повозившись в калькуляторе, пришел к реализации такого кода.
C-like:
bool: CSentryGun__SetController( const pEntity, const iController, iValue = 0, const iMinMaxValue[ 2 ] = { 0, 255 } )
{
if ( is_nullent( pEntity ) )
return false;
iValue = clamp( iValue, iMinMaxValue[ 0 ], iMinMaxValue[ 1 ] );
new Float: flAverage = ( iMinMaxValue[ 0 ] ) < 0 ? 127.5 : 255.0;
new Float: flNewValue = Float: ( flAverage / iMinMaxValue[ 1 ] * iValue );
if ( flAverage != 255.0 )
flNewValue += flAverage;
set_entvar( pEntity, var_controller, floatround( flNewValue ), iController );
return true;
}
// Use
CSentryGun__SetController( pEntity, 1, 0, { -50, 50 } );
Последнее редактирование: