AttachObjectToVehicle Оценка: 



Урок о том, как быстро и просто прикрепить объект к авто.
Инструкция: ( не для слабонервных )
Заходим в MTA
Создаем авто с координатами 0.0, 0.0, 0.0
ТПхаемся к авто, и крутим/вертим объект на авто ( как бы прикрепляем )
Сохраняем карту, конвертируем код МТА в pawn
Функция прикрепления объекта к авто.
AttachObjectToVehicle
Прикрепляем объект к авто.
Где police_car = CreateVehicle.
mig_obj = CreateObject.
Смотри мне нужно вот эти кординаты сделать так чтоб обект прицепился к машине
AddStaticVehicleEx(495,1575.2910156,-1610.8204346,13.7430000,169.9999390,34,52,15); //Sandking
CreateObject(18694,1573.5379639,-1608.7829590,12.4329996,0.0000000,70.0000000,0.0000000); //object(flamethrowerp) (1)
Теперь я делаю по инструкции но у меня не компилируется вот сама команда
new objectid = CreateObject(18694, 1573.5379639,-1608.7829590,12.4329996,0.0000000,70.0000000,0.0000000); // создаем сам объект
new vehicleid = GetPlayerVehicleID(playerid); 495 // узнаем ид авто
AttachObjectToVehicle(objectid, vehicleid, 1575.2910156,-1610.8204346,13.7430000,169.9999390,34,52,15); // прикрепляем сам объект
Тема: Пример использования функций AttachObjectToObject
Опции темы
Отображение

Пример использования функций AttachObjectToObject
пример! Используем функцию с MoveObject
Создаем
Идем в GameModeInit
И так сейчас у нас получилось примерно так
И так теперь за главный объект у нас Tester[0]!
Теперь сделаем тоже самое только без функций AttachObjectToObject

Re: Пример использования функций AttachObjectToObject

Re: Пример использования функций AttachObjectToObject
Нечто подобное было и раньше в скриптовых редакторах карт.
Так, довольно полезная функция.
Реклама в подписи запрещена.
Я ВКонтакте: [ vk.com/offreal ]
Re: Пример использования функций AttachObjectToObject
Освоил самую простую функцию? Боже мой. Даже для этого убожества есть спец. раздел. кошмар.
Грехи других судить Вы так усердно рветесь, начните со своих и до чужих не доберетесь. © Уильям Шекспир
Re: Пример использования функций AttachObjectToObject

Re: Пример использования функций AttachObjectToObject
Нечто подобное было и раньше в скриптовых редакторах карт.
Так, довольно полезная функция.
Attachobjecttoobject как прикрепить объект к авто
Моды для сервера
Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.
Модификации SA
Хотите разнообразить свою игру в San Andreas? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием
Funky_Storage
Заблокирован
Перемещаем нашу камеру на координаты «0,0,0». По умолчанию у нас уже забиты координаты, поэтому просто нажимает «Point camera at there coords«
Теперь добавляем наш автомобиль. Для этого в верхней панели нажимаем на пункт «Insert Object«
В появившемся окне вводим ID автомобиля и нажимаем «ОК«.
Нам необходимо присвоить его к координатам «0,0,0«. Для этого переходим во вкладку «Movement» и выставляем нужные нам координаты.
Таким же образом мы вставляем объект. И просто размещаем его в отношении к автомобилю, как мы хотим.
Поздравляю, половина пути пройдена. Теперь перейдем к части кодинга.
Создаем переменную:
Ей мы выделили место под наш автомобиль. В квадратных скобках указывается количество автомобилей.
Теперь объясню, откуда взять координаты. Первые четыре 0-ля мы не трогаем, т.к. они нам не нужны.
А вот следующие три нам как раз таки пригодятся. Это различные извращения над объектом (поворот и т.д.)
Их можно узнать в программе, в разделе «Rotation«
Теперь создаем машину, в том месте, где нам нужно.
И ниже пишем:
Тут уже наоборот, нам нужны только первые 3 координаты объекта. Их мы уже берем в «Coordinaties«
В итоге у нас получился следующий код (Еще вверху переменная):
Ну вот собственно и все, все проверено и работает. Спасибо за внимание!
Как-то раз я столкнулся с проблемой, когда мне нужна была какая-то очень редкоиспользуемая функция, нативка которой была для обычных объектов, но аналога которой для стримерских объектов не нашлось. Потом столкнулся с этой проблемой ещё и ещё раз, пока не решил изучить некоторые дополнительные функции стримера, которые довольно легко позволяют проделывать абсолютно любые действия над любым стримерским стаффом самостоятельно, даже если отдельных функций в стримере для этого нет.
Кстати, если вы здесь именно поэтому, то есть нуждаетесь в каком-либо функционале, коего вы не можете найти в стримере в качестве отдельных выделенных функций, то могу порекомендовать очень полезный include Streamer Functions (кликабельно), в котором есть абсолютно всё что вам нужно, и который, собственно, стал поводом для написания данной статьи.
Далее речь пойдёт о самых, по моему мнению, важных второстепенных функциях стримера, а также подробное описание, как ими пользоваться (чтобы далее вы сами могли использовать их абсолютно где хотите, понимая то, где их использование будет действительно выгодным и нужным). В первой части, в особенности, будет знакомство с функциями манипуляции данными.
Также это будет полезно для вас, если вы пишете какой-либо серверный модуль (include, fs), где вам нужно реализовать некую совместимость или более тесное взаимодействие со стримером. Ну или же если вы просто хотите узнать, например, как настроить лимиты для стримерских зон (которых по умолчанию нет), как поменять модель уже созданного актёра без его пересоздания (и соответственно возможного смещения его ида), или как узнать иды ближайших к игроку объектов без единого цикла с вашей стороны.
Определения (макросы)
для стримерских элементов
Список чего-либо виден ниже:
Почему выше в комментариях не написано, что типы именно для стримерских объектов, именно стримерских актёров или именно стримерских чекпоинтов? Потому что в некоторых функциях стример может работать также и с идами обычных объектов/актёров/чего-то ещё, если вдруг это понадобится, но об этом позже. В общем эти типы дают понять стримеру то, что ваш переданный ему далее ID 5 это именно ид (стримерского) пикапа, а не (стримерского) объекта или (стримерского) 3D-текста, если, к примеру, как тип вы передали именно «STREAMER_TYPE_PICKUP».
Перечисление
того, что можно установить стримерским элементам
Уже знаем, что первым аргументом в большинстве функций будет конкретный тип элемента. Вторым аргументом, логично предположить, будет сам ид элемента. Хорошо, но как нам понять, какие именно данные этому иду можно будет установить или их узнать?
Ниже показан enum, перечисляющий все данные, которые могут быть установлены большинством второстепенных функций стримера:
Имейте в виду: Некоторые типы того, что можно изменить у элемента применимы только для определённых типов элементов, а не для всех! К примеру «E_STREAMER_INVULNERABLE» явно намекает на редактирование неуязвимости для актёра, и вряд ли возымеет эффект, если вы попытаетесь применить её для объекта или мап-иконки.
Функции манипуляции данными
Streamer_(Get/Set)(Int/Float)Data и другие
Собственно, начнём с простого примера. Как было сказано в начале, мы имеем немалое количество функций, которые позволяют производить различные действия над объектами, актёрами, 3D-текстами и прочим, но для которых нет явных стримерских аналогов. Это такие функции, как: GetDynamicObjectModel, AttachDynamic3DTextLabelToPlayer, AttachDynamic3DTextLabelToVehicle и т.д. Что же делать, спросите вы наконец? Как их добавить или хотя-бы сделать то, что они делают, как-то самому, «вручную».
Для этого нам на помощь приходят функции Streamer_GetIntData и Streamer_SetIntData (именно на их примере я и начну рассказ о функциях манипуляции данными).
Использование (на примере реализации функции GetDynamicObjectModel):
Attachobjecttoobject как прикрепить объект к авто
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
CreateObject (modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ)
modelid ID модели объекта.
Float:X Координата X на карте.
Float:Y Координата Y на карте.
Float:Z Координата Z на карте.
Float:rX Угол поворота объекта по оси X.
Float:rY Угол поворота объекта по оси Y.
Float:rZ Угол поворота объекта по оси Z.
Функция возвращает ID созданного объекта.
Прикрепить созданный объект к машине.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
AttachObjectToVehicle (objectid, vehicleid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:RotZ)
objectid ID уже созданного объекта.
vehicleid ID транспортного средства
Float:OffsetX Смещение относительно транспортного средства по оси X
Float:OffsetY Смещение относительно транспортного средства по оси Y
Float:OffsetZ Смещение относительно транспортного средства по оси Z
Float:RotX Угол поворота относительно транспортного средства по оси X
Float:RotY Угол поворота относительно транспортного средства по оси Y
Float:RotZ Угол поворота относительно транспортного средства по оси Z
Эта функция нечего не возвращает.
Прикрепить созданный объект к другому созданному объекту.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
AttachObjectToObject(objectid, attachtoid, Float:OffsetX, Float:OffsetY, Float:OffsetZ, Float:RotX, Float:RotY, Float:RotZ, SyncRotation = 1);
Эта функция нечего не возвращает
Помещает уже созданный объект в указанную позицию.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
SetObjectPos (objectid, Float:X, Float:Y, Float:Z)
objectid ID уже созданного объекта.
Float:X Координата X на карте.
Float:Y Координата Y на карте.
Float:Z Координата Z на карте.
Эта функция нечего не возвращает.
Определить координаты объекта.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
GetObjectPos (objectid, &Float:X, &Float:Y, &Float:Z)
objectid ID уже созданного объекта.
Float:X Переменная в которую запишется координата X на карте.
Float:Y Переменная в которую запишется координата Y на карте.
Float:Z Переменная в которую запишется координата Z на карте.
Повернуть объект по трём координатам.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
SetObjectRot (objectid, Float:RotX, Float:RotY, Float:RotZ)
objectid ID уже созданного объекта.
Float:RotX Угол поворота относительно транспортного средства по оси X
Float:RotY Угол поворота относительно транспортного средства по оси Y
Float:RotZ Угол поворота относительно транспортного средства по оси Z
Эта функция нечего не возвращает.
Определить угол поворота объекта по трём координатам
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
GetObjectRot (objectid, &Float:RotX, &Float:RotY, &Float:RotZ)
objectid ID уже созданного объекта.
Float:RotX Переменная в которую запишется угол поворота по оси X
Float:RotY Переменная в которую запишется угол поворота по оси Y
Float:RotZ Переменная в которую запишется угол поворота по оси Z
Эта функция нечего не возвращает.
Узнать создан ли объект с данным ID
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
IsValidObject (objectid)
objectid ID объекта
Функция возвращает 1 если объект существует, 0 если нет
Уничтожить объект с данным ID
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
DestroyObject (objectid)
objectid ID объекта
Эта функция нечего не возвращает.
Эта функция двигает созданный объект в анимационном режиме.
objected ID объекта
Float:X Новая X-координата.
Float:Y Новая Y-координата.
Float:Z Новая Z-координата.
Float:Speed Скорость движения объекта.
Float:RotX Вращение по кординате X (опционально).
Float:RotY Вращение по кординате Y (опционально).
Float:RotZ Вращение по кординате Z (опционально).
Функция возвращает время движения объекта в миллисекундах.
Остановить движущийся объект после команды MoveObject.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
StopObject (objectid)
objected ID объекта
Эта функция нечего не возвращает
Проверить, движется ли даннй объект.
objectid ID проверяемого объекта
Функция возвращает 1 если объект движется, 0 если нет
Создать объект только для указанного игрока.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
CreatePlayerObject (playerid, modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance = 0.0)
playerid ID игрока
modelid ID модели объекта.
Float:X Координата X на карте.
Float:Y Координата Y на карте.
Float:Z Координата Z на карте.
Float:rX Угол поворота объекта по оси X.
Float:rY Угол поворота объекта по оси Y.
Float:rZ Угол поворота объекта по оси Z.
Float:DrawDistance Расстояние на котором отображаются объекты. При значении 0.0 отображаются на максимально большом расстояние.
Функция возвращает ID созданного объекта.
Помещает уже созданный объект игрока в указанную позицию.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
SetPlayerObjectPos (playerid, objectid, Float:X, Float:Y, Float:Z)
playerid ID игрока
objectid ID уже созданного объекта.
Float:X Координата X на карте.
Float:Y Координата Y на карте.
Float:Z Координата Z на карте.
Эта функция нечего не возвращает.
Определить координаты объекта игрока
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
GetPlayerObjectPos (playerid, objectid, &Float:X, &Float:Y, &Float:Z)
playerid ID игрока
objectid ID уже созданного объекта.
Float:X Переменная в которую запишется координата X на карте.
Float:Y Переменная в которую запишется координата Y на карте.
Float:Z Переменная в которую запишется координата Z на карте.
Эта функция нечего не возвращает.
Повернуть объект игрока по трём координатам.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
SetPlayerObjectRot (playerid, objectid, Float:RotX, Float:RotY, Float:RotZ)
playerid ID игрока
objectid ID уже созданного объекта.
Float:RotX Угол поворота относительно транспортного средства по оси X
Float:RotY Угол поворота относительно транспортного средства по оси Y
Float:RotZ Угол поворота относительно транспортного средства по оси Z
Эта функция нечего не возвращает.
Определить угол поворота объекта игрока по трём координатам
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
GetPlayerObjectRot (playerid, objectid, &Float:RotX, &Float:RotY, &Float:RotZ)
playerid ID игрока
objectid ID уже созданного объекта.
Float:RotX Переменная в которую запишется угол поворота по оси X
Float:RotY Переменная в которую запишется угол поворота по оси Y
Float:RotZ Переменная в которую запишется угол поворота по оси Z
Эта функция нечего не возвращает.
Определить создан ли объект игрока с данным ID
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
IsValidPlayerObject (playerid, objectid)
playerid ID игрока
objectid ID объекта
Функция возвращает 1 если объект существует, 0 если нет
Уничтожить объект игрока с данным ID
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
DestroyPlayerObject (playerid, objectid)
playerid ID игрока
objectid ID объекта
Эта функция нечего не возвращает.
Эта функция двигает созданный объект игрока в анимационном режиме.
playerid ID игрока
objected ID объекта
Float:X Новая X-координата.
Float:Y Новая Y-координата.
Float:Z Новая Z-координата.
Float:Speed Скорость движения объекта.
Float:RotX Вращение по кординате X (опционально).
Float:RotY Вращение по кординате Y (опционально).
Float:RotZ Вращение по кординате Z (опционально).
Эта функция нечего не возвращает.
Остановить движущийся объект игрока после команды MoveObject.
StopPlayerObject (playerid, objectid)
playerid ID игрока
objected ID объекта
Эта функция нечего не возвращает
Прикрепить к игроку ранее созданный объект.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
AttachObjectToPlayer (objectid, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ, Float:rX, Float:rY, Float:rZ)
objectid ID существующего объекта.
playerid ID игрока
Float:OffsetX Смещение по оси X, относительно центра игрока.
Float:OffsetY Смещение по оси Y, относительно центра игрока.
Float:OffsetZ Смещение по оси Z, относительно центра игрока.
Float:RotX Угол поворота объекта по оси X, относительно игрока.
Float:RotY Угол поворота объекта по оси Y, относительно игрока.
Float:RotZ Угол поворота объекта по оси Z, относительно игрока.
Эта функция нечего не возвращает
Проверить, движется ли даннй объект игрока.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
IsPlayerObjectMoving(playerid, objectid);
playerid ID игрок
objectid ID проверяемого объекта
Функция возвращает 1 если объект движется, 0 если нет.
Похожая на AttachObjectToPlayer функция, которая прикрепляет созданный для игрока объект, к другому игроку или к этому же игроку.
200?’200px’:»+(this.scrollHeight+5)+’px’);»>
AttachPlayerObjectToPlayer (objectplayer, objectid, attachplayer, Float:OffsetX, Float:OffsetY, Float:OffsetZ, Float:rX, Float:rY, Float:rZ)
objectplayer ID игрока
objectid ID существующего объекта.
attachplayer ИД игрока, к которому нужно прикрепить объект.
Float:OffsetX Смещение по оси X, относительно центра игрока attachplayer.
Float:OffsetY Смещение по оси Y, относительно центра игрока attachplayer.
Float:OffsetZ Смещение по оси Z, относительно центра игрока attachplayer.
Float:RotX Угол поворота объекта по оси X, относительно игрока attachplayer.
Float:RotY Угол поворота объекта по оси Y, относительно игрока attachplayer.
Float:RotZ Угол поворота объекта по оси Z, относительно игрока attachplayer.



















