Kernell Posted March 14, 2011 Share Posted March 14, 2011 Да вот пытался с помощью getElementBoundingBox, только она возвращает оффсет, а не координаты мира, хотя я пробовал по оффсету приатачить невидимый объект и вытащить координаты с помощью getElementPosition, да вот только что-то не получилось.. getElementMatrix - спасибо, не знал про неё. А то я тут уже через (ко)синусы начал (с математикой/геометрией беда). Хотя она скорее всего тоже оффсет вернёт. Link to comment
MX_Master Posted March 14, 2011 Share Posted March 14, 2011 оно там какие-то корды мира чтоле содержит, вощем я 3Д графике пинёк, нихрена не понимаю, в матюматике еще хорошо. Поэтому я через базар обычно к проблеме захожу ((: если кто-то пояснит шо це таке getElementMatrix, будет ниплоха Link to comment
Kernell Posted March 15, 2011 Share Posted March 15, 2011 Нет, getElementMatrix тут не помогает. Link to comment
MX_Master Posted March 15, 2011 Share Posted March 15, 2011 Нет, getElementMatrix тут не помогает. помогает, помогает Link to comment
Kernell Posted March 15, 2011 Share Posted March 15, 2011 Хм. И в правду, из твоего примера понял как пользоваться, спасибо Мне казалось, что только с помощью геометрических функций типа cos и sin это возможно )) Link to comment
Antibird Posted March 16, 2011 Share Posted March 16, 2011 Матрица уже содержит в себе всю необходимую тригонометрию, именно поэтому чертовски удобна в использовании. Link to comment
Kernell Posted March 18, 2011 Share Posted March 18, 2011 А есть у кого список функций МТА для Notepad++ (который кладётся в ..\Notepad++\plugins\APIs) ? Link to comment
MX_Master Posted March 18, 2011 Share Posted March 18, 2011 А есть у кого список функций МТА для Notepad++ (который кладётся в ..\Notepad++\plugins\APIs) ? постоянно кол-во меняется, поэтому каждый раз приходится обновлять списки советую просто с вики.. со страниц со списками функций скопировать и, возможно, отсортировать на 3 группы - сервер, клиент, общие (сортировать можно поиском и заменой с помощью регулярных выражений). Сортировка нужна в основном для подсветки. Не знаю как в блакноте++, но в некоторых редакторах можно указать для каждой функции ее прототип. Это бывает полезно при авто дополнении кода. Прототипы собирать по всем страницам вики - весьма трудоемкая задача. Link to comment
Arisu Posted March 18, 2011 Share Posted March 18, 2011 обнаружил у себя такой баг кусочек кода: function onPlayerWasted () local money = getPlayerMoney(source) setPlayerMoney(source, 0) local x, y, z = getElementPosition(source) while money > 0 do local angle, distance = math.random(360), 0.5 * math.random(10) local px, py = distance * math.cos(math.deg(angle)), distance * math.sin(math.deg(angle)) local pickup = createPickup(x+px, y+py, z-0.5, 3, 1212) local m = math.random(money) money = money - m local tmr = setTimer(destroyElement, 25000, 1, pickup) addEventHandler("onPickupHit", pickup, function (player) if not isPedInVehicle(player) then playSoundFrontEnd(player, 7) givePlayerMoney(player, m) killTimer(tmr) destroyElement(source) end end ) end end код при смерти игрока выбрасывает его деньги на случайное расстояние собственно в чем проблема, если меня убивают вблизи, и пикапы создаются в местах, где стоит убийца(или другой игрок), то createPickup возвращает в переменную pickup НЕ элемент (isElement говорит false). и на него из-за этого не аттачится onPickupHit и по таймеру возникает bad element pointer @ destroyElement. type() говорит что pickup это userdata. ничего понять не могу, бьюсь в панике что это? Link to comment
MX_Master Posted March 18, 2011 Share Posted March 18, 2011 чуваГ, во-первых, чтобы выкинуть пикап на +/- 10 метров возле трупа, синусы и косинусы не надо юзать. Просто взять в 1 юнит сетку 20 на 20 и на ней случайную точку сообразить. При желании, можно сетку и помельче, но при 10 метрах это лишнее. local px, py = math.random(0,20) - 10, math.random(0,20) - 10 во-вторых, все значения нужно проверять без исключения. Допустим, если получаешь позицию элемента в 3 переменные, то хотя бы первую проверить, что она - это число, а не false какой-ньть. И если что не так, не пихать эти переменные в следующую функцию! Ну и в-третьих, если уж не создаются, то проверь, где будет создан, и если там кто-то есть, отдай сразу без пикапа ему то, что в пикапе лежит. Ну и банальные givePlayerMoney(player, m) killTimer(tmr) сервер не знает таких переменных как m и tmr, т.к. они были локальными во время работы функции onPlayerWasted () и их уже нет в момент, када работает обработчик для "onPickupHit" переменные таймера и кол-ва денег должны быть глобальными или хотя бы положить их в данные созданного пикапа Link to comment
Arisu Posted March 20, 2011 Share Posted March 20, 2011 (edited) Всё, проблему решил. Но каак) Подумал проверить остальные обработчики пикапов в скрипте. У меня был глобальный(повешанный на корневой элемент ресурса) onPickupHit для пикапов с оружием. В нем, соответственно, проверка на тип пикапа == 2. Но каким-то странным образом для моих пикапов с типом 3 тип пикапа возвращался 2. Они обрабатывались функцией как пикапы оружия и удалялись раньше времени) В итоге убрал глобальный обработчик и стал вешать его конкретно на каждый пикап оружия отдельно. Каким образом тип 3 оказывался типом 2 до сих пор не пойму. Еще обнаружил такую проблему (это уже со стримером мта какие-то баги), что созданные вблизи игрока короны не появлятся, но если уйти от этого места и вернуться к ним то они будут видны.тоже с этим разобрался Edited March 20, 2011 by Guest Link to comment
MX_Master Posted March 20, 2011 Share Posted March 20, 2011 я в салюте юзал эти коронки (клиент) и вблизи они создавались в данные каждого пикапа всего лишь надо добавлять какой-то идент, который при проверке точно скажет, что именно этот пикап нужно уничтожить. setElementData, где последний параметр равен false, и потом getElementData в общем обработчике юзать, расфасовывая нужные пикапы Link to comment
Arisu Posted March 20, 2011 Share Posted March 20, 2011 Да кстати, поясню почему у меня синусы и косинусы. Мне нужно чтобы пикапы не по сетке 10*10 выбрасывались, а чтобы они выбрасывались на определенный радиус вокруг игрока. Изначально они были просто по кругу, но для большей реалистичности я приделал рандомное расстояние с шагом в 0.5м) теперь вот еще какая проблема. у меня есть координаты машины (x, y, z) и ее вращения (x, y, z). Нужно запустить ракету от машины, чтобы она летела строго вперед. С параметрами функции createProjectile разобраться не могу, всё что могу получить от ракеты через getElementVelocity, getElementRotation от ракеты, запущенной из базуки - тоже ни о чем не говорит. Link to comment
MX_Master Posted March 20, 2011 Share Posted March 20, 2011 тему отдельную создай про createProjectile, а во флудилке уже толку отвечать, никто потом не найдет толком ответ на такой же вопрос Link to comment
Kernell Posted March 22, 2011 Share Posted March 22, 2011 Наверное все заметили в сампе фишку с неоном и т.д.? Так вот я пробовал создавать в 3D Studio Max подобные объекты, но света нет, так как GTA движёк не поддерживает light елементы и эту поддержку сделали через движёк сампа. Не знаю как попросить в баг трекере, поэтому пишу сюда, надеюсь меня услышат. ))) Хотелось бы видеть функцию создания таких light объектов в самой MTA (например как createMarker) с возможностью приатачивания к другим елементам. (С указанием радиуса освещения, цвета, альфы и т.д. ) Link to comment
MX_Master Posted March 22, 2011 Share Posted March 22, 2011 Есть же объекты в ГТА, которые светятся, даже есть объекты с системой частиц. С помощью частиц можно сделать освещение. Допустим был же в сэмпе объект в виде огня.. он в мта не пашет? Link to comment
Kernell Posted March 22, 2011 Share Posted March 22, 2011 Ты имеешь ввиду объекты типа машины, фонарные столбы и т.д.? Объясню на примере машин. У машин есть dummy, это объекты которые отвечают за крепление каждой части, положение бензобака, глушителя, фар, где сидит перс, колёса, двери, бампера, апргейды и т.д. Такие dummy поддерживают только машины. Dummy мигалок нету, их можно поправить только через exe. Так же у фонарных столбов и светофоров. Меня интересует не освещение огня, а именно создание света, любого цвета (складно ). Сделать так же неон, искусственные мигалки (сам скрипт мигалок вот я написал, но без освещения к сожалению). Хорошо было бы ещё задавать форму освещения, например сделать свои фары, более реалестичные. Я конечно понимаю слабые машины это будет напрягать, упадёт фпс, но это уже думаю дело разработчиков серверов, думать им.) Link to comment
MX_Master Posted March 22, 2011 Share Posted March 22, 2011 Свет фар это еще и текстуры. Подозреваю, что если можно сделать объект с частицами в виде огня, то почему нельзя сделать объект с частицами в виде куда-то направленного света? Link to comment
Kernell Posted March 22, 2011 Share Posted March 22, 2011 Зачем текстуры? Создать свет на DirectX и никаких текстур. Опять же повторюсь, зачем мне огонь? 1. Он одного цвета 2. Он скорее всего динамичный 3. Альфа хотя бы к нему будет норм применяться? Как вот я освещение красного и синего цвета сделаю для мигалок? Да я уверен эта функция многим просто пригодится и будет очень удобна. Создал свет например dxCreateLight( 15.0, 255, 0, 0, 25 ) т.е. ( радиус, r, g, b, a ). И делать с ним то же что и с другими эелементами (атачить, устанавливать alfа..) P.S. Ты как свет огня собрался направлять?))) Он как никрути будет круглое освещение давать. Link to comment
MX_Master Posted March 22, 2011 Share Posted March 22, 2011 Про огонь это пример частиц в объектах всего лишь, можешь про него забыть. Таким же образом можно сделать и направленный свет используя другие цвета и расположение частиц. DX это не элементы и ими не будут, для них каждый может создать свою lua систему, на то и был рассчет, чтобы не создавать второй gui. Запрос функции можешь послать в wish лист на баг трекере. Так будет само правильно. Link to comment
Kernell Posted March 22, 2011 Share Posted March 22, 2011 Ну как элемент, это я как пример, думаю разработчикам MTA виднее, хотя хз.. Просто факт то, что было бы многим удобнее закрепить свет хоть на голову персонажа, а не обновлять по координатам через OnClientRender (в таком случае нужна ещё и функция dxSetLightPosition). например сделать просто createLight чтобы она возвращала элемент. Только GUI вот тут причём? Речь о 3D свете)) Хотя можно сделать и 2 функции, dx и как элемент.. Думать надо P.S. Я в баг трекер не умею писать как бы)) А вообще с английским слабо. Link to comment
Antibird Posted March 22, 2011 Share Posted March 22, 2011 Коли уж про свет речь зашла, кто-нибудь пробовал как-то докопаться до тех прожекторов, что в area69 в singlePlayer? Это что, объект, эффект, частицы, симбиоз вышеперечисленного? Вроде даже LODы есть, в сингле опять же. Прожектор police Maverick'a - из той же оперы? Link to comment
MX_Master Posted March 22, 2011 Share Posted March 22, 2011 (edited) * это объект, возможно этот "vgsEcnstrct09" * прожектор - думаю да Edited March 22, 2011 by Guest Link to comment
Kenix Posted March 22, 2011 Share Posted March 22, 2011 1 это объект 2 это что-то другое но точно не объект (я так думаю) возможно это динамический объект Link to comment
Kernell Posted March 23, 2011 Share Posted March 23, 2011 То ли я только сейчас догнал, то ли мне показалось. local _table = {}; _table.test = "test"; _table.test2 = 2; local _test = _table; -- теперь самое интересное. _test.test = "123"; -- я так понял, что значение изменится и в _table и в _test? Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now