Автор Тема: Соприкосновение объекта с землёй  (Прочитано 4090 раз)

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Соприкосновение объекта с землёй
« : Июнь 19, 2016, 01:05:35 am »
Всем привет! Недавно начал писать новый скрипт и появилась необходимость как-то исхитриться и проверить то, соприкоснулся объект с землёй или нет. Коли нет такого опкода, решил пойти по пути изменения координат, но почему-то тоже не вышло. Подскажите, как это сделать?

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Соприкосновение объекта с землёй
« Ответ #1 : Июнь 19, 2016, 09:10:19 am »
Пробовал проверять разницу между координатой Z объекта и координатой Z-ground под объектом?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Соприкосновение объекта с землёй
« Ответ #2 : Июнь 19, 2016, 04:56:19 pm »
Если объект динамический(прописан в object.dat, имеет коллизию из шаров) - можно проверять, соприкоснулся ли объект с землей так:
Сначала, перед циклом проверки, нужно врубить это:
04D9: object $TELO set_scripted_collision_check 1 // тут, думаю, всё понятно - без включения этой опции нельзя будет проверить касание объекта $TELO до чего-либоВ цикле проверки проверять касание земли так:
04DA:   has_object $TELO collided Когда закончили - вырубить проверку(если в дальнейшем нам объект еще понадобится)
04D9: object $TELO set_scripted_collision_check 0
P.S. переменная у меня глобальная, т.к. код выдран из мэйна. Если работаешь с CLEO - юзай локальные.

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Re: Соприкосновение объекта с землёй
« Ответ #3 : Июнь 20, 2016, 03:44:11 pm »
Если объект динамический(прописан в object.dat, имеет коллизию из шаров) - можно проверять, соприкоснулся ли объект с землей так:
Сначала, перед циклом проверки, нужно врубить это:
04D9: object $TELO set_scripted_collision_check 1 // тут, думаю, всё понятно - без включения этой опции нельзя будет проверить касание объекта $TELO до чего-либоВ цикле проверки проверять касание земли так:
04DA:   has_object $TELO collided Когда закончили - вырубить проверку(если в дальнейшем нам объект еще понадобится)
04D9: object $TELO set_scripted_collision_check 0
P.S. переменная у меня глобальная, т.к. код выдран из мэйна. Если работаешь с CLEO - юзай локальные.
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
    wait 0
    /* какой-то_код */
end
[условие выполнено]

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Соприкосновение объекта с землёй
« Ответ #4 : Июнь 20, 2016, 08:07:15 pm »
У CPhysical есть метод GetHasCollidedWith(), который проверяет соприкосновение с другим обьектом.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Соприкосновение объекта с землёй
« Ответ #5 : Июнь 20, 2016, 09:39:06 pm »
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
    wait 0
    /* какой-то_код */
end
[условие выполнено]
Ну, я не люблю такой вид кода, но вроде правильно...

У CPhysical есть метод GetHasCollidedWith(), который проверяет соприкосновение с другим обьектом.
Шик, вот про это не знал)

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Re: Соприкосновение объекта с землёй
« Ответ #6 : Июнь 21, 2016, 05:25:57 pm »
Цитировать
Я так понимаю, вот так?
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1
while 04DA: has_object 5@ collided
    wait 0
    /* какой-то_код */
end
[условие выполнено]
Ну, я не люблю такой вид кода, но вроде правильно...
А как бы ты написал?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Соприкосновение объекта с землёй
« Ответ #7 : Июнь 22, 2016, 10:26:16 am »
А как бы ты написал?
Ну, типа такого:
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1

:Ololo
wait 0
if
04DA: has_object 5@ collided
jf @Ololo
код
и если снова понадобится чекать, то
04D9: object 5@ set_scripted_collision_check 0
wait 0
04D9: object 5@ set_scripted_collision_check 1
jump @Ololo

Оффлайн Prographer

  • Прохожий
  • *
  • Сообщений: 102
  • Репутация: +9/-0
  • Говнокодим, грабим, убиваем
    • Просмотр профиля
Re: Соприкосновение объекта с землёй
« Ответ #8 : Июнь 23, 2016, 08:36:19 pm »
Ну, типа такого:
Object.Create(5@, 345, 0@, 1@, 2@)
04D9: object 5@ set_scripted_collision_check 1

:Ololo
wait 0
if
04DA: has_object 5@ collided
jf @Ololo
код
и если снова понадобится чекать, то
04D9: object 5@ set_scripted_collision_check 0
wait 0
04D9: object 5@ set_scripted_collision_check 1
jump @Ololo
Не знаю. Такой вариант, конечно, типичен для Cleo-синтаксиса, но его не удобно читать, по крайней мере мне.

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Соприкосновение объекта с землёй
« Ответ #9 : Июнь 24, 2016, 10:22:40 am »
Не знаю. Такой вариант, конечно, типичен для Cleo-синтаксиса, но его не удобно читать, по крайней мере мне.
Ну - это дело вкуса) Я просто и не пишу по-другому, поэтому за правильность твоего варианта не смогу поручиться(я просто не шарю в этом)