22:28
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Модератор форума: AXE, Weddew  
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » MoveObject МНОГО объектов или тонна проблем с движ кораблем.
MoveObject МНОГО объектов или тонна проблем с движ кораблем.
[BGD]John_RUSДата: Среда, 29.01.2014, 03:58 | Сообщение # 1
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус:
Есть у меня мод, огромный корабль набитый доверху всякими ништяками, и плюс лифт во внутреннюю часть, там тоже не скучно, и вот дело в том, что всё это собрано из около 500 объектов, он статичен, придумалось мне научить эту посудину плавать.
Проблема 1:
Как пользоваться MoveObject для одного объекта я знаю, а если их там около 500? Мне создавать 500 штук new: verhnya_paluba, new: nizhnya_paluba, new:gitara_kayuta и так далее verhnya_paluba=CreateObject? bs Вариант конечно реальный, авось к 2016 закончу crazy Есть варианты побыстрее?
Проблема 2:
Координаты. Для каждого объекта на корабле необходимо вычислить координаты, по которым данный объект будет двигаться, но для каждого объекта они свои, если задать одни и те же все объектам, корабль будет "разваливаться" в пути, и трюм и верхняя и нижняя палубы будут следовать к одной точке, в итоге получиться непонятная груда фигни, для каждого объекта нужно вычистить свои координаты, индивидуальную высоту, индивидуальное место остановки у пирса, собственно как это сделать, не гоняя 500 объектов в редакторе и не переписывая координаты каждому? Может быть можно заставить один объект двигаться по координатам, а остальным указать как они должны располагаться относительно его?



Сообщение отредактировал [BGD]John_RUS - Воскресенье, 09.02.2014, 05:09
Dima-kunДата: Среда, 29.01.2014, 09:49 | Сообщение # 2
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
http://wiki.sa-mp.com/wiki/AttachObjectToObject всех объектов к одному и двигай этот объект


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
[BGD]John_RUSДата: Среда, 29.01.2014, 21:25 | Сообщение # 3
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус:
Даа, я думал над этим, но там нужно тогда высчитывать координаты расположения всех прицепляемых объектов, относительно главного "несущего" объекта, это понятно что не нужно будет копипастить координаты из редактора, но такое высчитывание разности по всем осям отберет еще больше времени
_BigSm0ke_Дата: Среда, 29.01.2014, 22:25 | Сообщение # 4
Местный
Группа: I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус:
сделай функцию которая высчитывает и аттач в цикле


LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON
Продаю РП мод: подробнее тут
Решаю задачи по техническим дисциплинам, подробнее тут
[BGD]John_RUSДата: Четверг, 30.01.2014, 02:21 | Сообщение # 5
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус:
Я же чайник, это должно выглядеть как, высчитывается разность и результат ставится в переменную? То есть создать порядка 400 переменных? Можно как-то примером, и от таких расчетов в реал таим, игра не грохнется?
FabervoxДата: Суббота, 01.02.2014, 00:05 | Сообщение # 6
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 235
Награды: 1
Город: Краматорск
Репутация: 217
Замечания: 0%
Статус:
[BGD]John_RUS, у тебя, не будет этих расчетов, в реальном времени. Тебе нужно сгенерировать сам код.

[cut=AttachObjectToObject()]objectid ID объекта который вы хотите прикрепить к другому главному объекту.
attachtoid ID главного объекта к которому вы хотите прикрепить другой не главный.
Float:OffsetX The distance between the main object and the object in the X direction.
Float:OffsetY The distance between the main object and the object in the Y direction.
Float:OffsetZ The distance between the main object and the object in the Z direction.
Float:RotX The X rotation between the object and the main object.
Float:RotY The Y rotation between the object and the main object.
Float:RotZ The Z rotation between the object and the main object.
SyncRotation Selects wheather the rotation should be synched or not.[/cut]

Т.е. берем для примера 2 объекта.
1. Прикрепляемый объект.
2. Главный объект, тот который в последствии будешь двигать.
3. Берем положение обоих объектов по оси, Главный-Прикрепленный.
4. 5. ...
6. Тоже самое, но т.к. градусы у нас по кругу, то либо значение может быть отрицательным(что я полагаю врядли), либо если угол по оси у прикрепленного объекта меньше главного, то расчет 360-Главный+Прикрепленный, а если больше Прикрепленный-Главный.
7. 8. ...
9. синхронизация вращения нужна, ставить 1.

Т.е. делается все банально, из строчек создающих объекты. Если шаришь в каком либо текстовом языке (PHP,Python,etc) или в "регулярных выражениях"(regexp), то просто из самой карты можно сделать. Если нет, то получаешь данные от объектов,считаешь приблизительно как выше, и выводишь в файл с разделителем запятой, вначале строки "AttachObjectToObject(", в конце ");".




RP в мире - как мух в сортире, а нужного чуда не видать покуда..©_Z_
Как посмотришь, сколько тысяч строчек кода, в одном файле, сразу понимаешь почему моды делают годами.
Закон сохранения сложности
toneysixДата: Суббота, 01.02.2014, 21:24 | Сообщение # 7
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Касательно углов:
Зная тангенсы соотв. векторов объектов можно найти угол между ними по формуле для каждой степени свободы:

new Float: cX = atan( ( floattan( bX, degrees ) - floattan( aX, degrees ) ) / ( 1 + floattan( aX, degrees ) * floattan( bX, degrees ) ) );
new Float: cY = atan( ( floattan( bY, degrees ) - floattan( aY, degrees ) ) / ( 1 + floattan( aY, degrees ) * floattan( bY, degrees ) ) );
new Float: cZ = atan( ( floattan( bZ, degrees ) - floattan( aZ, degrees ) ) / ( 1 + floattan( aZ, degrees ) * floattan( bZ, degrees ) ) );

где, bX, bY, bZ - углы подчиненных объектов, тогда как
aX, aY, aZ - углы ведущего объекта;
cX, cY, cZ и есть искомые углы, которые будет устанавливаться в качестве новых углов подчиненных объектов;

Ну, что же касается нового положения в новой системе координат, здесь ещё проще, 7 или 8 класс геометрии поиск координат вектора по двум его точкам:
Из координат конца вычитаются координаты начала, так для каждой точки. Вот собственно и все.



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Kr[A]zДата: Воскресенье, 02.02.2014, 17:02 | Сообщение # 8
Советчик
Группа: Пользователи
Сообщений: 1203
Награды: 18
Город: Барнаул
Репутация: 1794
Замечания: 80%
Статус:
Цитата toneysix ()
Зная тангенсы соотв. векторов объектов можно найти угол между ними по формуле для каждой степени свободы

говорила мама, учи геометрию..

[BGD]John_RUSДата: Четверг, 06.02.2014, 21:09 | Сообщение # 9
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус:
Fabervox, так в том то и дело, вручную считать это адовый труд, их там слишком много, или есть варианты без знаний php и иже с ними?

Добавлено (06.02.2014, 21:09)
---------------------------------------------
И как таки сделать лифт? На статичном корабле он тупо MoveObject по высоте, а на движущемся корабле как сделать так, чтобы лифт всегда держался XY осей корабля, но по Z мог двигаться только по команде игрока? Уже вручную посчитал, десяток основных частей перемещаются, а лифт по команде упорно уходит на место старта корабля =)

Dima-kunДата: Четверг, 06.02.2014, 22:19 | Сообщение # 10
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
[BGD]John_RUS, таймером узнавай текущее положение лифта и поднимай на немного вверх. Чем больше таких движений, тем лифт будет точнее двигаться, но будет бОльшая нагрузка на сервер.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
[BGD]John_RUSДата: Воскресенье, 09.02.2014, 05:24 | Сообщение # 11
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус:
Добавил ламп, горят абы как, точнее лишь те, что ближе всего к игроку, и то чтобы зажглась надо вокруг побегать =)
Как сие исправляется? Дело в дальности прорисовки?

Прикрепления: 2154329.png (406.1 Kb) · 9058422.jpg (406.5 Kb)
KlebitДата: Воскресенье, 09.02.2014, 14:07 | Сообщение # 12
Уверенный в себе
Группа: Пользователи
Сообщений: 265
Награды: 0
Город: None
Репутация: -31
Замечания: 60%
Статус:
[BGD]John_RUS, никак
WeddewДата: Воскресенье, 09.02.2014, 23:07 | Сообщение # 13
Группа: Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус:
[BGD]John_RUS, помню делали мы с Хасаном такой корабль. Сам код довольно прост, однако в игре проседал FPS из-за чего невозможно было играть.

Добавлено (09.02.2014, 23:07)
---------------------------------------------

Цитата [BGD]John_RUS ()
Я же чайник, это должно выглядеть как, высчитывается разность и результат ставится в переменную? То есть создать порядка 400 переменных? Можно как-то примером, и от таких расчетов в реал таим, игра не грохнется?

Из координат объекта вычти координаты основания корабля, тем самым найдешь координаты вектора "Корабль-Объект". Координаты вектора и будут параметрами для прикрепления.




www.weddew-shop.ru
[BGD]John_RUSДата: Пятница, 14.02.2014, 13:10 | Сообщение # 14
Освоившийся
Группа: Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус:
Weddew, после запиливания лифта тоже начало тормозить, вернул лестницу...
Цитата Weddew ()
Из координат объекта вычти координаты основания корабля, тем самым найдешь координаты вектора "Корабль-Объект". Координаты вектора и будут параметрами для прикрепления.

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

Добавлено (14.02.2014, 13:10)
---------------------------------------------
Замучался я его двигать командами из OnPlayerCommandText... Попробовал через GetObjectPos

new Float:x,Float:y,Float:z;
GetObjectPos(PartyShip, x, y, z)
if( x == -1789.76 && y == 1582.29) && z == 7.00); //Все ошибки на этой строке
{
MoveObject(PartyShip,-1670.42, 1570.36, 7.0,5);
}

Ошибки:
error 001: expected token: ";", but found "if"
error 029: invalid expression, assumed zero
warning 215: expression has no effect
error 001: expected token: ";", but found ")"
fatal error 107: too many error messages on one line

Нагуглил некую функцию ObjectToPoint, но из примеров нашел только ворота на одном таймере, как его заставить плавать по координатам вообще без чьего-то участия?



Сообщение отредактировал [BGD]John_RUS - Пятница, 14.02.2014, 13:37
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » MoveObject МНОГО объектов или тонна проблем с движ кораблем.
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua