Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Проверка расстояния между двумя игроками.

    Здравствуйте, есть ли стандартная функция которая проверяла бы расстояние между двумя игроками, нужна для команды /tazer.
    Или же какая-то другая функция?

    Нашел такой вариант:
    PHP код:
    forward Float:GetDistanceBetweenPlayers(u1u2);
    public 
    Float:GetDistanceBetweenPlayers(u1u2)
    {
        new 
    Float:x1Float:y1Float:z1,
        
    Float:x2Float:y2Float:z2;
        if((
    == GetPlayerPos(u1x1y1z1) || (== GetPlayerPos(u2x2y2z2)))) return -1.00;
        
    GetPlayerPos(u1x1y1z1);
        
    GetPlayerPos(u2x2y2z2);
        return 
    VectorSize(x1-x2y1-y2z1-z2);

    Как то оптимизировать или улучшить можно или есть другие варианты, например ProxDetectorS, подойдет ли?
    Последний раз редактировалось Skyline; 14.07.2018 в 11:07.

  2. #2
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Можно просто не вызывать GetPlayerPos повторно и вместо знаков '-' использовать floatsub. А зачем данная функция public? Может быть сделать её stock.

  3. #3
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Можно просто не вызывать GetPlayerPos повторно и вместо знаков '-' использовать floatsub. А зачем данная функция public? Может быть сделать её stock.
    Сделал так, на работоспособность не проверял.
    PHP код:
    stock Float:GetDistanceBetweenPlayers(u1u2)
    {
        new 
    Float:x1Float:y1Float:z1,
        
    Float:x2Float:y2Float:z2;
        if((
    == GetPlayerPos(u1x1y1z1) || (== GetPlayerPos(u2x2y2z2)))) return -1.00;
        return  
    floatround(GetPlayerDistanceFromPoint(playeridx2y2z2));


  4. #4
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    1. stock IsPlayerNearPlayer(playerid, targetid, Float:radius)
    2. {
    3. new
    4. Float:x,
    5. Float:y,
    6. Float:z
    7. ;
    8. GetPlayerPos(playerid, x, y, z);
    9.  
    10. return (GetPlayerInterior(playerid) == GetPlayerInterior(targetid) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(targetid)) && IsPlayerInRangeOfPoint(targetid, radius, x, y, z);
    11. }

  5. Пользователь сказал cпасибо:
    Nexius_Tailer (14.07.2018)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •