Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 7 из 7
  1. #1
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±

    Проверка на место парковки автомобиля.

    Здравствуйте. Я сделал команду на проверку места парковки автомобиля.

    Нужно, чтобы игрок мог проверить - совпадает ли текущее местоположение автомобиля с местом его парковки или нет.

    Эта команда, например, может помочь полиции определять неправильно припаркованный автомобиль и принимать соответствующие меры к гражданину.

    Проблема в том, что малейшее несовпадение координат уже означает, что автомобиль не припаркован (не находится на месте парковки).

    Как сделать, чтобы совпадение имело некую регулируемую неточность, чтобы незначительные отклонения не учитывались?

    PHP код:
    CMD:vp(playeridparams[])
    {
        if(
    sscanf(params,"i"params[0])) return SCM(playeridCOLOR_WHITE"Введите: /vp [id]");
        if(
    PlayerInfo[params[0]][pCar] == 0) return SCM(playeridCOLOR_GREY"У этого гражданина нет транспотрного средства!");
        new 
    string[128];
        new 
    Float:vpX,Float:vpY,Float:vpZ;
        
    GetVehiclePos(car[params[0]],Float:vpX,Float:vpY,Float:vpZ);
        if(
    vpX == PlayerInfo[params[0]][pCarparkX] && vpY == PlayerInfo[params[0]][pCarparkY])
        {
            
    SetPlayerCheckpoint(params[0], Float:vpX,Float:vpY,Float:vpZ5);
            
    f("Транспорт гражданина %s [%d] припаркован на своём месте."GN(params[0]), params[0]);
            
    SCM(playeridCOLOR_GREENstring);
        }
        else
        {
            
    SetPlayerCheckpoint(params[0], Float:vpX,Float:vpY,Float:vpZ5);
            
    f("Транспорт гражданина %s [%d] припаркован не на своём месте."GN(params[0]), params[0]);
            
    SCM(playeridCOLOR_REDstring);
        }
        return 
    1;


  2. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  3. Пользователь сказал cпасибо:
    Jackal (13.01.2016)
  4. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±
    PHP код:
    stock Float:GetDistanceBetweenPoints(Float:x1Float:y1Float:z1Float:x2Float:y2Float:z2)
    {
        return 
    VectorSize(x1-x2y1-y2z1-z2);


  5. Пользователь сказал cпасибо:
    Jackal (13.01.2016)
  6. #4
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    PHP код:
    stock Float:GetDistanceBetweenPoints(Float:x1Float:y1Float:z1Float:x2Float:y2Float:z2)
    {
        return 
    VectorSize(x1-x2y1-y2z1-z2);

    PHP код:
    CMD:vp(playeridparams[])
    {
        if(
    sscanf(params,"i"params[0])) return SCM(playeridCOLOR_WHITE"Введите: /vp [id]");
        if(
    PlayerInfo[params[0]][pCar] == 0) return SCM(playeridCOLOR_GREY"У этого гражданина нет транспотрного средства!");
        new 
    string[128];
        new 
    Float:vpX,Float:vpY,Float:vpZ;
        
    GetVehiclePos(car[params[0]],Float:vpX,Float:vpY,Float:vpZ);
        if(
    GetDistanceBetweenPoints(vpXvpYvpZPlayerInfo[params[0]][pCarparkX], PlayerInfo[params[0]][pCarparkY], PlayerInfo[params[0]][pCarparkZ]) > 5.0)
        {
            
    SetPlayerCheckpoint(params[0], Float:vpX,Float:vpY,Float:vpZ5);
            
    f("Транспорт гражданина %s [%d] припаркован на своём месте."GN(params[0]), params[0]);
            
    SCM(playeridCOLOR_GREENstring);
        }
        else
        {
            
    SetPlayerCheckpoint(params[0], Float:vpX,Float:vpY,Float:vpZ5);
            
    f("Транспорт гражданина %s [%d] припаркован не на своём месте."GN(params[0]), params[0]);
            
    SCM(playeridCOLOR_REDstring);
        }
        return 
    1;

    Странно, но после добавления этой функции - Run time error 19 file or function is not found.

  7. #5
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Цитата Сообщение от Jackal Посмотреть сообщение
    PHP код:
    CMD:vp(playeridparams[])
    {
        if(
    sscanf(params,"i"params[0])) return SCM(playeridCOLOR_WHITE"Введите: /vp [id]");
        if(
    PlayerInfo[params[0]][pCar] == 0) return SCM(playeridCOLOR_GREY"У этого гражданина нет транспотрного средства!");
        new 
    string[128];
        new 
    Float:vpX,Float:vpY,Float:vpZ;
        
    GetVehiclePos(car[params[0]],Float:vpX,Float:vpY,Float:vpZ);
        if(
    GetDistanceBetweenPoints(vpXvpYvpZPlayerInfo[params[0]][pCarparkX], PlayerInfo[params[0]][pCarparkY], PlayerInfo[params[0]][pCarparkZ]) > 5.0)
        {
            
    SetPlayerCheckpoint(params[0], Float:vpX,Float:vpY,Float:vpZ5);
            
    f("Транспорт гражданина %s [%d] припаркован на своём месте."GN(params[0]), params[0]);
            
    SCM(playeridCOLOR_GREENstring);
        }
        else
        {
            
    SetPlayerCheckpoint(params[0], Float:vpX,Float:vpY,Float:vpZ5);
            
    f("Транспорт гражданина %s [%d] припаркован не на своём месте."GN(params[0]), params[0]);
            
    SCM(playeridCOLOR_REDstring);
        }
        return 
    1;

    Странно, но после добавления этой функции - Run time error 19 file or function is not found.
    This function was added in SA-MP 0.3z and will not work in earlier versions!

  8. Пользователь сказал cпасибо:
    Jackal (13.01.2016)
  9. #6
    Аватар для Jackal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.08.2015
    Адрес
    Новокузнецк
    Сообщений
    54
    Репутация:
    2 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    This function was added in SA-MP 0.3z and will not work in earlier versions!
    А, вот нашел аналогичную функцию, всё работает.

    PHP код:
    stock Float:GetDistanceBetweenPoints(Float:XFloat:YFloat:ZFloat:PointXFloat:PointYFloat:PointZ) return floatsqroot(floatadd(floatadd(floatpower(floatsub(XPointX), 2.0), floatpower(floatsub(YPointY), 2.0)), floatpower(floatsub(ZPointZ), 2.0))); 
    Всем спасибо за помощь.

  10. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±
    Цитата Сообщение от Jackal Посмотреть сообщение
    А, вот нашел аналогичную функцию, всё работает.

    PHP код:
    stock Float:GetDistanceBetweenPoints(Float:XFloat:YFloat:ZFloat:PointXFloat:PointYFloat:PointZ) return floatsqroot(floatadd(floatadd(floatpower(floatsub(XPointX), 2.0), floatpower(floatsub(YPointY), 2.0)), floatpower(floatsub(ZPointZ), 2.0))); 
    Всем спасибо за помощь.
    Сразу указывай версию SA-MP, если пользуешься не последней.

  11. Пользователь сказал cпасибо:
    Jackal (14.01.2016)
 

 

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

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

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

Ваши права

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