Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Длинный прыжок
ppc Дата: Четверг, 07.04.2016, 10:49:41 | Сообщение # 1
Сообщений: 85
Репутация: 0 [ +/- ]
Кто знает как реализуется ускорение во время прыжка как в варкрафт моде или баннихопе?
 
BarD Дата: Четверг, 07.04.2016, 14:44:51 | Сообщение # 2
Сообщений: 943
Репутация: 137 [ +/- ]
Есть функция подталкивания:

Код
Push(client)
{
decl Float:EyeAngles[3];
GetClientEyeAngles(client, EyeAngles);

decl Float:Push[3];
Push[0] = (FloatMul(50.0, Cosine(DegToRad(EyeAngles[1]))));
Push[1] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[1]))));
Push[2] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[0]))));
ScaleVector(Push, 20.0);

TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, Push);
}

Push - вектор ускорения. В ScaleVector можно изменить силу (там, где 20.0). Чем больше, тем сильнее толчок. Если ставить отрицательное значение, то толкать должно назад, скорее всего.

Еще есть функция отталкивания игрока от определенной точки в определенном радиусе. Если игрок находится в пределах радиуса, то оттолкнется.

Код

stock Push(client, Float:S_Center[3], Float:Radius, Float:Power)
{
  new Float:EntPos[3];
   if(IsClientInGame(client) && IsPlayerAlive(client))
   {
    GetClientAbsOrigin(client, EntPos);
     
    if((GetVectorDistance(S_Center, EntPos) <= Radius))
    {
     new Float:NewVel[3];
      
     MakeVectorFromPoints(S_Center, EntPos, NewVel);
     NormalizeVector(NewVel, NewVel);
     ScaleVector(NewVel, Power);
      
     TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, NewVel);
   }
  }
}


client - индекс клиента.
S_Center - точка, от которой будем отталкивать
Radius - Радиус отталкивания. Если игрок попадает в него, то оттолкнется.
Power - сила отталкивания.

//Спасибо хвостегу. Его функция.
P.S. Если поменять местами S_Center и EntPos в MakeVectorFromPoints, то будет не отталкивать, а притягивать.


Сообщение отредактировал BarD - Четверг, 07.04.2016, 14:45:56
 
ppc Дата: Суббота, 16.04.2016, 13:27:24 | Сообщение # 3
Сообщений: 85
Репутация: 0 [ +/- ]
Спасибо большое

Добавлено (16.04.2016, 13:27:24)
---------------------------------------------
А как сделать толчек по направлению прицела? Просто я например хочу прыгнуть вперед и вверх и направляю прицел туда а этот код толкает вперед
Код
Push(client)
{
decl Float:EyeAngles[3];
GetClientEyeAngles(client, EyeAngles);

decl Float:Push[3];
Push[0] = (FloatMul(50.0, Cosine(DegToRad(EyeAngles[1]))));
Push[1] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[1]))));
Push[2] = (FloatMul(50.0, Sine(DegToRad(EyeAngles[0]))));
ScaleVector(Push, 20.0);

TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, Push);
}

Все, не надо сделал по другому немного)


Сообщение отредактировал ppc - Суббота, 16.04.2016, 13:55:57
 
  • Страница 1 из 1
  • 1
Поиск: