Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Посчитать radius damage

cs-portal
сообщение 25.7.2013, 23:01
Сообщение #1
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

Что имеем


radius = 150 units
damage 99 если попадаешь +1 юнит и более до 150 ( не прямым попаданием )

так вот я чтото не могу составить формулу, голова не работает , печально.

Если игрок на пределе радиуса то ему по сути 1 хп снесет.
если в центре то 99 . как множитель найти?

new Float:damage = 99 - 150 / float(dist) ; верно?

да вроде правильно, можно закрыть
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Flyfisherman
сообщение 25.7.2013, 23:06
Сообщение #2
Стаж: 13 лет

Сообщений: 415
Благодарностей: 363
Полезность: 549

Меценат Меценат

Цитата(cs-portal @ 26.7.2013, 1:01) *
Что имеем


radius = 150 units
damage 99 если попадаешь +1 юнит и более до 150 ( не прямым попаданием )

так вот я чтото не могу составить формулу, голова не работает , печально.

Если игрок на пределе радиуса то ему по сути 1 хп снесет.
если в центре то 99 . как множитель найти?

new Float:damage = 99 - 150 / float(dist) ; верно?

да вроде правильно, можно закрыть

У меня взорвался мозг))) пойду посплю)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 25.7.2013, 23:14
Сообщение #3


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Код:
Explode( pEntity )
{
if( !is_valid_ent( pEntity ) )
return;

static Float:vecSrc[ 3 ];
entity_get_vector( pEntity, EV_VEC_origin, vecSrc );

static pevVictim, Float:flDistance, Float:flDamage
pevVictim = -1;

#define MAX_RADIUS 150.0
#define MAX_DAMAGE 100.0

while( ( pevVictim = engfunc( EngFunc_FindEntityInSphere, pevVictim, vecSrc, MAX_RADIUS ) ) > 0 )
{
flDistance = entity_range( pEntity, pevVictim );
flDamage = UTIL_FloatRadius( MAX_DAMAGE, MAX_RADIUS, flDistance );
}
}

stock Float:UTIL_FloatRadius( Float:flMaxAmount, Float:flRadius, Float:flDistance )
return floatsub( flMaxAmount, floatmul( floatdiv( flMaxAmount, flRadius ), flDistance ) );


А далее урон через ExecuteHam - TakeDamage
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: