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

    Статус
    Оффлайн
    Регистрация
    19.06.2021
    Сообщений
    5
    Репутация:
    0 ±

    Безопасная система.

    Я пытаюсь создать безопасную систему с дверью, которая открывается и закрывается.
    Моя цель - создать хранилище по любой координате и автоматически создать дверь в правильном положении.

    PHP код:
    new safe CreateDynamicObject(19618414.470702537.359139.45900,  0.000000.0000090.00000);
    new 
    door CreateDynamicObject(19619414.704012536.938489.45800,  0.000000.0000090.00000); 

    new 
    Float:door_offsetX = (414.70401-414.47070);//0.23331
    new Float:door_offsetY = (2537.35913-2536.93848);//0.42065
    new Float:door_offsetZ = (9.45900-9.45800);//0.001

    stock CreateSafeBox(Float:px,Float:py,Float:pz,Float:rz)
    {
    CreateDynamicObject(19618pxpypz  0.00.0rz);//Safe

    CreateDynamicObject(19619floatsin(-rz,degrees)*-0.42065-floatcos(-rz,degrees)*0.23331+px,
    floatcos(-py,degrees)*-0.42065+floatsin(-py,degrees)*0.23331+pypz-0.0010.00.0rz);//Door
    return 1;

    Это результат, но я не могу заставить его работать должным образом. Кто-нибудь Помогите мне?

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

    Статус
    Оффлайн
    Регистрация
    19.05.2021
    Сообщений
    24
    Репутация:
    2 ±
    Тебе нужно просто создать дверь с координатами сейфа + величины оффсетов, которые ты уже нашел.
    Остается только придумать, как поворачивать дверь для открытия сейфа.

    PHP код:
    stock CreateSafeBox(Float:px,Float:py,Float:pz,Float:rz)
    {
        
    CreateDynamicObject(19618pxpypz  0.00.0rz);//Safe

        
    CreateDynamicObject(19619px 0.23331py 0.42065pz 0.0010.00.0rz);//Door
        
    return 1;

    Последний раз редактировалось Scander; 19.06.2021 в 18:40.

  3. Пользователь сказал cпасибо:
    JR_Junior (20.06.2021)
  4. #3
    Аватар для JR_Junior
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.06.2021
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от Scander Посмотреть сообщение
    Тебе нужно просто создать дверь с координатами сейфа + величины оффсетов, которые ты уже нашел.
    Остается только придумать, как поворачивать дверь для открытия сейфа.

    PHP код:
    stock CreateSafeBox(Float:px,Float:py,Float:pz,Float:rz)
    {
        
    CreateDynamicObject(19618pxpypz  0.00.0rz);//Safe

        
    CreateDynamicObject(19619px 0.23331py 0.42065pz 0.0010.00.0rz);//Door
        
    return 1;

    Не сработало!

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

    Статус
    Оффлайн
    Регистрация
    15.04.2021
    Сообщений
    4
    Репутация:
    1 ±
    https://pawn-wiki.ru/index.php?/topic/53098-safemaker/

    Не удержался и реализовал. Вот пожалуйста)
    Обязательно залью на этот форум)

    tg @vawylon
    Последний раз редактировалось vawylon; 19.06.2021 в 20:31.

  6. #5
    Аватар для Scander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.05.2021
    Сообщений
    24
    Репутация:
    2 ±
    Цитата Сообщение от JR_Junior Посмотреть сообщение
    Не сработало!
    У тебя оффсеты неправильные походу. Я посмотрел урок, который выше скинули и они другие.
    По X: -0.4224850000000515
    По Y: -0.24340800000004492
    По Z не меняется.

    Попробуй:
    PHP код:
    stock CreateSafeBox(Float:px,Float:py,Float:pz,Float:rz)
    {
        
    CreateDynamicObject(19618pxpypz  0.00.0rz);//Safe

        
    CreateDynamicObject(19619px 0.4224850000000515py 0.24340800000004492pz0.00.0rz);//Door
        
    return 1;


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

    Статус
    Оффлайн
    Регистрация
    19.06.2021
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от Scander Посмотреть сообщение
    У тебя оффсеты неправильные походу. Я посмотрел урок, который выше скинули и они другие.
    По X: -0.4224850000000515
    По Y: -0.24340800000004492
    По Z не меняется.

    Попробуй:
    PHP код:
    stock CreateSafeBox(Float:px,Float:py,Float:pz,Float:rz)
    {
        
    CreateDynamicObject(19618pxpypz  0.00.0rz);//Safe

        
    CreateDynamicObject(19619px 0.4224850000000515py 0.24340800000004492pz0.00.0rz);//Door
        
    return 1;

    К сожалению, это тоже не работает.

  9. #7
    Аватар для vawylon
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2021
    Сообщений
    4
    Репутация:
    1 ±
    Тригонометрия в помощь!

  10. #8
    Аватар для JR_Junior
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.06.2021
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от vawylon Посмотреть сообщение
    https://pawn-wiki.ru/index.php?/topic/53098-safemaker/

    Не удержался и реализовал. Вот пожалуйста)
    Обязательно залью на этот форум)

    tg @vawylon
    А почему вы не разместили SafeEditor.pwn?

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Чтобы создать дверь нужно сделать подобные действия:

    1. const Float: SAFE_WIDTH = 0.664063;
    2. const Float: SAFE_LENGTH = 0.851563;
    3. const Float: DOOR_WIDTH = 0.1796874;
    4.  
    5.  
    6. new
    7. Float: cos_z = floatcos(rot_z_safe, degrees),
    8. Float: sin_z = floatsin(rot_z_safe, degrees),
    9. Float: width = (SAFE_WIDTH - DOOR_WIDTH) * 0.5,
    10. Float: length = SAFE_LENGTH * 0.5;
    11.  
    12. 19619,
    13. x_safe_pos + sin_z * width - cos_z * length,
    14. y_safe_pos - cos_z * width - sin_z * length,
    15. z_safe_pos,
    16. 0.0,
    17. 0.0,
    18. rot_z_safe
    19. );


      Открыть/закрыть


    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

  12. Пользователь сказал cпасибо:
    JR_Junior (20.06.2021)
  13. #10
    Аватар для JR_Junior
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.06.2021
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Чтобы создать дверь нужно сделать подобные действия:

    1. const Float: SAFE_WIDTH = 0.664063;
    2. const Float: SAFE_LENGTH = 0.851563;
    3. const Float: DOOR_WIDTH = 0.1796874;
    4.  
    5.  
    6. new
    7. Float: cos_z = floatcos(rot_z_safe, degrees),
    8. Float: sin_z = floatsin(rot_z_safe, degrees),
    9. Float: width = (SAFE_WIDTH - DOOR_WIDTH) * 0.5,
    10. Float: length = SAFE_LENGTH * 0.5;
    11.  
    12. 19619,
    13. x_safe_pos + sin_z * width - cos_z * length,
    14. y_safe_pos - cos_z * width - sin_z * length,
    15. z_safe_pos,
    16. 0.0,
    17. 0.0,
    18. rot_z_safe
    19. );


      Открыть/закрыть


    Сработало отлично! Большое спасибо!
    Какое приложение вы использовали для получения этих размеров? Я хотел получить размеры идентификаторов 2003 и 2004 годов.

    Изменить: найдено https://dev.prineside.com/en/gtasa_s...-cr_safe_body/
    Последний раз редактировалось JR_Junior; 20.06.2021 в 01:32.

 

 

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

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

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

Ваши права

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