Автор Тема: Как правильно Создавать Объекты  (Прочитано 4458 раз)

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Как правильно Создавать Объекты
« : Январь 02, 2019, 10:53:08 pm »
вот есть созданный объект



на стать на него нельзя



вопрос как правильно его создать?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как правильно Создавать Объекты
« Ответ #1 : Январь 03, 2019, 03:29:07 am »
Это какие-то особенные проблемы мультиплеера, поскольку у объекта 3064 есть коллизия.

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #2 : Январь 03, 2019, 01:58:52 pm »
Это какие-то особенные проблемы мультиплеера, поскольку у объекта 3064 есть коллизия.

ну про то что у него есть коллизия я знаю, и проблема эта не мультиплеера, мультиплеер - эта таже самая игра в которую внедрёд сетевой код.

у меня объекты в данный момент создаются чрез опкод 0107, большинство из них создаются именно так без коллизии, поэтому я и спрашиваю как правильно создавать?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как правильно Создавать Объекты
« Ответ #3 : Январь 03, 2019, 03:10:40 pm »
Точно не помню(давно этим не занимался), но вроде опкод 0107 предназначен для объектов из "\data\object.dat", для всех остальных же есть опкод 029B(могу ошибаться и вполне возможно, что и для 029B необходимо, чтобы объект был прописан в "\data\object.dat").
« Последнее редактирование: Январь 03, 2019, 03:14:32 pm от Shagg_E »

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #4 : Январь 03, 2019, 05:49:45 pm »
Точно не помню(давно этим не занимался), но вроде опкод 0107 предназначен для объектов из "\data\object.dat", для всех остальных же есть опкод 029B(могу ошибаться и вполне возможно, что и для 029B необходимо, чтобы объект был прописан в "\data\object.dat").

не тот, не тот опкод не могут создавать объекты норм с коллизией чтобы они были как часть карты, вот я и спрашиваю как это правильно делать для примера я выбрал модель 3064


Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как правильно Создавать Объекты
« Ответ #5 : Январь 03, 2019, 08:00:11 pm »
Значит, дело в наличии объекта в "\data\object.dat", как я писал выше.

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #6 : Январь 03, 2019, 08:13:01 pm »
Значит, дело в наличии объекта в "\data\object.dat", как я писал выше.

скорее всего из-за того что он не прописан в файле data\maps\generic.ide

но как решить задачу, не редактируя файлов игры вот в чём вопрос
« Последнее редактирование: Январь 03, 2019, 08:18:56 pm от Saint »

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #7 : Январь 04, 2019, 01:12:02 pm »


{$CLEO .cs}
0000:
while true
wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if 
          05EE: key_pressed 50
        then
            Model.Load(3064)
            038B: load_requested_models
            if
              Model.Available(3064)
            then
                Object.Destroy(0@)
                0@ = Object.Init(3064, 288.0, -1303.0, 11.4)
                Object.CollisionDetection(0@, 1)
                Model.Destroy(3064)
                Object.RemoveReferences(0@)
            end
            repeat
              wait 0
            until 85EE: not key_pressed 50
        end 
    end
end

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как правильно Создавать Объекты
« Ответ #8 : Январь 04, 2019, 04:37:37 pm »


Хочешь прикол? Уже в паре сотен метров севернее кол не работает.
Я вчера психанул(т.к. точно помнил, что у меня в проектах таких проблем не было) и решил затестить сам этот объект. С большим трудом, но сегодня наконец я всё же допёр до частичного понимания, как это работает, и почему у меня с этим не было проблем в моих модах.

Если вкратце, то объект, созданный скриптом, будет иметь коллизию только в той зоне, в col-файле которой находится его коллизия. Иначе говоря, объект 3064 будет иметь коллизию только в районе washints(+~100м), т.к. его коллизия находится в "washints.col".
Где закреплены границы районов для этого "правила" - я не знаю, т.к. очистка MAP.ZON NAVIG.ZON INFO.ZON и main.scm не помогает.
Скорее всего, привязка стандартных col-файлов к определенным границам и сами эти границы прописаны в exe.

Короче, от проблемы можно избавиться, если удалить коллизию нужного нам объекта из washints.col(который лежит в gta3.img) и добавить эту коллизию в новый созданный col-файл(который прописать в gta_vc.dat), либо добавить её в "models\coll\generic.col".
ИЛИ можно вообще удалить все col-файлы из gta3.img и прописать в gta_vc.dat пути ко всем копиям col-файлов, которые уже находятся в папке "DATA\MAPS\NAME". В этом случае проблема решится сразу для всех объектов.
ИЛИ можно попробовать найти в exe эту привязку col-файлов к зонам и отрубить это.

Ну и, прописывание объекта в object.dat по-прежнему желательно для корректной физики.

Всё вышеперечисленное было проверено на еще нескольких объектах из разных зон, и везде один результат.

В своих модах, поскольку я сносил полностью карту - col-файлы из gta3.img я не юзал, а создавал новые. Соответственно, они не были никаким таинственным образом привязаны ни к каким зонам на карте и объекты из них работали нормально везде. В дефолтном же Вайсе, видимо, где-то дополнительно прописана такая вот угрюмая оптимизация...
« Последнее редактирование: Январь 04, 2019, 09:32:45 pm от Shagg_E »

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #9 : Январь 04, 2019, 09:05:32 pm »
больше спасибо за ваши ответы, очень помогли, буду теперь думать что делать...

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как правильно Создавать Объекты
« Ответ #10 : Январь 04, 2019, 09:36:02 pm »
Тебе спасибо) Если бы ты это не заметил, я бы наверняка оочень долго тупил, когда столкнулся бы с этим в скором будущем, т.к. планирую кое-какой аддон для дефолтного Вайса, где может иметь место скриптовый спавн объектов  :-X

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #11 : Февраль 01, 2019, 12:59:47 am »
ещё вопрос по теме:

как создать статический объект например мяч (526) который нельзя уничтожить и сдвинуть с места?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Как правильно Создавать Объекты
« Ответ #12 : Февраль 01, 2019, 01:13:34 am »
Хз, мб убрать кол?

Или:
Непосредственно у готового объекта в структуре выставить пруфы(0x052 и 0x053) нулевую массу(0x0B8), чтобы висел в воздухе и 999999.99 сопротивление(0x0BC).

К сожалению, на практике не сталкивался, но по логике второй вариант должен сработать, т.к. у меня срабатывало обратное(делал фонарные столбы более легкими для сбивания)
« Последнее редактирование: Февраль 01, 2019, 01:19:11 am от Shagg_E »

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #13 : Февраль 01, 2019, 07:10:24 pm »
Хз, мб убрать кол?

Или:
Непосредственно у готового объекта в структуре выставить пруфы(0x052 и 0x053) нулевую массу(0x0B8), чтобы висел в воздухе и 999999.99 сопротивление(0x0BC).

К сожалению, на практике не сталкивался, но по логике второй вариант должен сработать, т.к. у меня срабатывало обратное(делал фонарные столбы более легкими для сбивания)

нет, это не то, объект должен стать частью карты сbuilding

Оффлайн Saint

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +1/-0
  • Saint Games
    • saint36rus
    • Просмотр профиля
Re: Как правильно Создавать Объекты
« Ответ #14 : Февраль 02, 2019, 05:14:22 pm »
Хз, мб убрать кол?

Или:
Непосредственно у готового объекта в структуре выставить пруфы(0x052 и 0x053) нулевую массу(0x0B8), чтобы висел в воздухе и 999999.99 сопротивление(0x0BC).

К сожалению, на практике не сталкивался, но по логике второй вариант должен сработать, т.к. у меня срабатывало обратное(делал фонарные столбы более легкими для сбивания)

в принципе кое-чего удалось достич меняя мараметры массы и флаги, осталось отключить повреждаемость объектов (тогже мяча, когда в него врезаешься на машине или бочки (350) когда в неё стреляешь она всё равно взрывается, даже если утановленны иммунитеты.

кто что думает?