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

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

  • Страница 1 из 1
  • 1
телепортенити
ppc Дата: Воскресенье, 12.06.2016, 23:00:37 | Сообщение # 1
Сообщений: 85
Репутация: 0 [ +/- ]
Вопрос такой: Как переместить игрока за спину другому игроку. Не просто рядом а именно тп за спину
 
GodlikE145 Дата: Понедельник, 13.06.2016, 05:40:19 | Сообщение # 2
Сообщений: 33
Репутация: 9 [ +/- ]
Работай с углами поворота игрока в этот момент. Другой вопрос: как случайно не телепортнуть игрока в стену, если второй игрок будет спиной стоять к стене?

Функция, проверяющая, в стене ли находится точка (возвращает true, если точка в стене или на стене (отвесной) )
Код

public bool:TRFilter_AimTarget(entity, mask, any:client)
{
    if (entity == client) return false;
    return true;
}

bool:InWall(Float:point[3])
{
  new Float:end[3];
  point[2]+=3.0;
  TR_TraceRayFilter(point, Float:{0.0, 0.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
  if(point[0] == end[0]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 45.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
if(point[1] == end[1] || point[0] == end[0]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 90.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
if(point[1] == end[1]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 135.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
if(point[1] == end[1] || point[0] == end[0]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 180.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
  if(point[0] == end[0]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 225.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
if(point[1] == end[1] || point[0] == end[0]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 270.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
  if(point[1] == end[1]) return true;
  
  TR_TraceRayFilter(point, Float:{0.0, 315.0, 0.0}, MASK_SOLID, RayType_Infinite, TRFilter_AimTarget);
  TR_GetEndPosition(end);
  if(point[1] == end[1] || point[0] == end[0]) return true;
  
  return false;
}

Добавлено (13.06.2016, 05:40:19)
---------------------------------------------
По поводу сдвига точки по вектору назад (то, что тебе и нужно сделать), посмотри тут: http://world-source.ru/forum/100-2385-1



Сообщение отредактировал GodlikE145 - Понедельник, 13.06.2016, 05:37:05
 
ppc Дата: Понедельник, 13.06.2016, 21:31:09 | Сообщение # 3
Сообщений: 85
Репутация: 0 [ +/- ]
сенкью
 
  • Страница 1 из 1
  • 1
Поиск: