GTA Builder Форум
GTA Vice City => Общие вопросы => Тема начата: Saint от Январь 02, 2019, 10:53:08 pm
-
вот есть созданный объект
(https://pp.userapi.com/c844418/v844418817/16e6cf/AZhB-qzWkWs.jpg)
на стать на него нельзя
(https://pp.userapi.com/c844418/v844418817/16e6de/c6VAp5Mv7IM.jpg)
вопрос как правильно его создать?
-
Это какие-то особенные проблемы мультиплеера, поскольку у объекта 3064 есть коллизия (https://i.gyazo.com/59c5a35df6c2ce54391f997deb0dca51.png).
-
Это какие-то особенные проблемы мультиплеера, поскольку у объекта 3064 есть коллизия (https://i.gyazo.com/59c5a35df6c2ce54391f997deb0dca51.png).
ну про то что у него есть коллизия я знаю, и проблема эта не мультиплеера, мультиплеер - эта таже самая игра в которую внедрёд сетевой код.
у меня объекты в данный момент создаются чрез опкод 0107, большинство из них создаются именно так без коллизии, поэтому я и спрашиваю как правильно создавать?
-
Точно не помню(давно этим не занимался), но вроде опкод 0107 предназначен для объектов из "\data\object.dat", для всех остальных же есть опкод 029B(могу ошибаться и вполне возможно, что и для 029B необходимо, чтобы объект был прописан в "\data\object.dat").
-
Точно не помню(давно этим не занимался), но вроде опкод 0107 предназначен для объектов из "\data\object.dat", для всех остальных же есть опкод 029B(могу ошибаться и вполне возможно, что и для 029B необходимо, чтобы объект был прописан в "\data\object.dat").
не тот, не тот опкод не могут создавать объекты норм с коллизией чтобы они были как часть карты, вот я и спрашиваю как это правильно делать для примера я выбрал модель 3064
-
Значит, дело в наличии объекта в "\data\object.dat", как я писал выше.
-
Значит, дело в наличии объекта в "\data\object.dat", как я писал выше.
скорее всего из-за того что он не прописан в файле data\maps\generic.ide
но как решить задачу, не редактируя файлов игры вот в чём вопрос
-
(http://thumbs2.imagebam.com/19/28/18/9331091081739914.jpg) (http://www.imagebam.com/image/9331091081739914)
{$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
-
([url]http://thumbs2.imagebam.com/19/28/18/9331091081739914.jpg[/url]) ([url]http://www.imagebam.com/image/9331091081739914[/url])
Хочешь прикол? Уже в паре сотен метров севернее кол не работает (https://i.gyazo.com/979b9906cd83b542ca09f889ff7ffdb3.jpg).
Я вчера психанул(т.к. точно помнил, что у меня в проектах таких проблем не было) и решил затестить сам этот объект. С большим трудом, но сегодня наконец я всё же допёр до частичного понимания, как это работает, и почему у меня с этим не было проблем в моих модах.
Если вкратце, то объект, созданный скриптом, будет иметь коллизию только в той зоне, в col-файле которой находится его коллизия. Иначе говоря, объект 3064 будет иметь коллизию только в районе washints (https://i.gyazo.com/a433c613476e21c418dca207316926bd.png)(+~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 я не юзал, а создавал новые. Соответственно, они не были никаким таинственным образом привязаны ни к каким зонам на карте и объекты из них работали нормально везде. В дефолтном же Вайсе, видимо, где-то дополнительно прописана такая вот угрюмая оптимизация...
-
больше спасибо за ваши ответы, очень помогли, буду теперь думать что делать...
-
Тебе спасибо) Если бы ты это не заметил, я бы наверняка оочень долго тупил, когда столкнулся бы с этим в скором будущем, т.к. планирую кое-какой аддон для дефолтного Вайса, где может иметь место скриптовый спавн объектов :-X
-
ещё вопрос по теме:
как создать статический объект например мяч (526) который нельзя уничтожить и сдвинуть с места?
-
Хз, мб убрать кол (https://www.gtagmodding.com/opcode-database/opcode/0382/)?
Или:
Непосредственно у готового объекта в структуре (https://gtamods.com/wiki/Memory_Addresses_(VC)#CEntity) выставить пруфы(0x052 и 0x053) нулевую массу(0x0B8), чтобы висел в воздухе и 999999.99 сопротивление(0x0BC).
К сожалению, на практике не сталкивался, но по логике второй вариант должен сработать, т.к. у меня срабатывало обратное(делал фонарные столбы более легкими для сбивания)
-
Хз, мб убрать кол (https://www.gtagmodding.com/opcode-database/opcode/0382/)?
Или:
Непосредственно у готового объекта в структуре (https://gtamods.com/wiki/Memory_Addresses_(VC)#CEntity) выставить пруфы(0x052 и 0x053) нулевую массу(0x0B8), чтобы висел в воздухе и 999999.99 сопротивление(0x0BC).
К сожалению, на практике не сталкивался, но по логике второй вариант должен сработать, т.к. у меня срабатывало обратное(делал фонарные столбы более легкими для сбивания)
нет, это не то, объект должен стать частью карты сbuilding
-
Хз, мб убрать кол (https://www.gtagmodding.com/opcode-database/opcode/0382/)?
Или:
Непосредственно у готового объекта в структуре (https://gtamods.com/wiki/Memory_Addresses_(VC)#CEntity) выставить пруфы(0x052 и 0x053) нулевую массу(0x0B8), чтобы висел в воздухе и 999999.99 сопротивление(0x0BC).
К сожалению, на практике не сталкивался, но по логике второй вариант должен сработать, т.к. у меня срабатывало обратное(делал фонарные столбы более легкими для сбивания)
в принципе кое-чего удалось достич меняя мараметры массы и флаги, осталось отключить повреждаемость объектов (тогже мяча, когда в него врезаешься на машине или бочки (350) когда в неё стреляешь она всё равно взрывается, даже если утановленны иммунитеты.
кто что думает?
-
кто что думает?
¯\_(ツ)_/¯
НО: Я когда-то искал способ взрыва стекол, и-таки нашел, попутно найдя аналогичную функцию для "взрывных" объектов (http://forum.gtabuilder.ru/index.php?topic=322.msg2474#msg2474)(последнее сообщение в теме). Где-то в ней или родительских функциях должна быть какая-то проверка на "взрывоопасность" объекта или около того. Соответственно, найдя это, можно отрубить это у выборочных объектов.
P.S. Я понимаю, что мои сообщения могут раздражать этими "когда-то", "что-то" и "где-то", но, к сожалению, на данный момент более детально помочь не могу :(
-
ИЛИ можно попробовать найти в exe эту привязку col-файлов к зонам и отрубить это.
отличное было бы решение