Jump to content

Kernell

MTA Contributors
  • Posts

    1,739
  • Joined

  • Last visited

Everything posted by Kernell

  1. Первый код у тебя как бы правильный, за исключением пару моментов - setCameraTarget отцепляет камеру от аттача (хотя МТА всё равно считает её приатаченой). Второй момент - ты пытаешься игрока приатачить к "камере" (я так понял у тебя там объект для теста?), а надо наоборот. attachElements( %что%, %к чему% ) P.S. зачем getLocalPlayer и getRootElement? Уже давно есть глобальные переменные root и localPlayer
  2. Код покажите. Ранее я делал подобное с setCameraMatrix, но так как с математикой у меня не очень, были мелкие баги. Но как появилась getCamera() на стороне клиента - я быстренько всё это переписал. Собственно тут всё просто, получаете элемент камеры, атачите её к чему нужно и всё. Если нужно реализовать вращение - то есть setElementAttachedOffsets.
  3. Автор: ты два раза задаёшь один и тот же вопрос, и даже не попробовал воспользоваться поиском. Эта тема уже давно обсуждалась: https://forum.multitheftauto.com/viewtopic.php?f ... 20#p592620
  4. Это лишь кажется так. На самом деле виной оказаться может даже битый сектор на жестком диске. Очень давно (когда GTA:SA только вышла) у меня была похожая проблема - при попадании автомобиля в воду компьютер перезагружался, даже без BSOD. Помогла стандартная виндовая дефрагментация диска.
  5. Ну так возьми да попробуй, в чём проблема? Есть функция, есть руки. Вопрос из серии, "можно ли вызвать функцию"..
  6. То, что ты написал - это проверка едет авто с макс. скоростью или нет, а мне нужно просто вычислять макс. скорость каждого авто и сделать это посредствами функций сложно(в том плане, что на макс. скорость влияет много факторов: вес и т.д), поэтому я и составил таблицу. Тоесть другими словами: мне нужно макс. скорость авто, как только я в него сел и формулу для расчета макс. скорости с помощью параметров от handling я на просторах интернета не нашел. Поэтому выбор был только один: таблица. Нет там такой проверки. Там идёт вычисление максимальной достигнутой скорости автомобилем. Если тебе нужно моментально узнать какой скоростной лимит у автомобиля, то Handling в помощь. Но без флага USE_MAXP_LIMIT информация не будет действительной.
  7. Ты же сказал что тебе наоборот не нужна таблица?
  8. function OnClientRender() if vehicle.max_speed == NULL then vehicle.max_speed = 0; end if vehicle.speed > vehicle.max_speed then vehicle.max_speed = vehicle.speed; end end Собственно все необходимые проверки я опустил. В целом логика должна быть ясна.
  9. Господи. Как же до тебя не доходит? Перечитай тему.
  10. Речь шла о реализации собственных классов с помощью API MTA, ты видимо читаешь через строчку.
  11. Начнём с того, что я автор той библиотеки которая реализовывает ООП в таком виде как указанно по ссылке выше. Мы говорим с тобой о разных вещах, ты уже сам и не заметил как ушел от темы, пытаясь мне доказать, что на Lua можно реализовать полноценное ООП. Спасибо, но зря стараешься, я это отлично знаю и давно уже реализовал всё необходимое. Но речь совершенно о другом.
  12. Нет такого параметра. Можно только указать прозрачность материала в самой ZModeler, но в игре доступ к этому вы не получите (разве что шейдером). Вобще прозрачность применяется полностью на весь элемент, смотрите setElementAlpha P.S. Только мне кажется странным, что название темы не соответствует содержимому?
  13. Ты не показал конкретного примера. Я хочу видеть код, хочу видеть как выглядят твои "Наследственность" и Полиморфизм. И как я говорил выше - без каких либо библиотек. Ибо я и до введения ООП в МТА использовал и продолжаю использовать собственные библиотеки для реализации классов подобно C# (пример). Но я хочу видеть нативные функции для реализации всего этого, собственно о чём и шла речь с самого начала. Например LuaBind даёт такой функционал, можно объявлять собственные классы в таком виде: class "Vehicle" ( Element ); И заметь, все созданные объекты являются userdata, а не table. Это уже как минимум даёт возможность повесить событие __gc и использовать для вызова деструктора. Конечно можно опять же таки своими библиотеками реализовать создание классов на базе элементов. Но какой тогда смысл введённого ООП в MTA? Смысл в том чтобы тоже самое работало быстрее и не приходилось бы костылять библиотеки для каждого ресурса. Я понимаю, что полиморфизм можно реализовывать просто объявляя пустые функции. Но пока не появится в самой MTA возможность объявления классов, всего остального тоже не будет. Поэтому МТА нужно ввести ключевое слово "class" для объявления собственных классов, с возможность наследования, вызов кострукта\деструктора и определения свойств с методами get и set.
  14. у меня значение выставлено на 500, это считается нормой, или это много? Можно и больше. Я не помню при каком значении вылетает. Надеюсь Вы в курсе про ограничение в 400 объектов?
  15. У каждой погоды свой радиус видимости который влияет на прорисовку объектов. Пробуйте изменять это значение с помощью setFarClipDistance, но осторожно. При высоких значениях крашит клиент.
  16. Эммм, никого не хочу задеть, но это довольно странный ответ. На предыдущий пост, в котором было сказано, что мол не хватает полиморфизма и наследственности, было отвечено, что это не так. И Lil Toady прав, они есть. И используются очень многими, мной тоже. Если нужны примеры использования, могу привести отдельно. Lua всего лишь имитирует ООП, возможно по другими принципам ООП и есть вопросы, но как раз упомянутые наследственность и полиморфизм работают. И их можно и нужно использовать. Эта возможность у нас есть Давай примеры. Я выше привёл свои, как это должно работать. Естественно без помощи сторонних библиотек, всё должно быть на уровне самой MTA.
  17. Заканчивайте оффтопить. P.S. fabervox, краткость - сестра таланта. Тебя очень трудно читать, и это не только моё мнение.
  18. Зачем в цикле обрабатывать всех игроков и для каждого посылать пакет? Вызывайте событие для root.
  19. Ты видимо вобще не понимаешь о чём речь. Попробую объяснить. То о чём ты сейчас сказал - это всё касается лишь C++, т.е. то на чём это всё реализовано. Конечно вы это реализовали всё красиво со всеми принципами ООП, как положено - да не спорю, вам удобно, вам хорошо. А что на выходе имеем мы? Только лишь доступ к членам (и то чтобы добавить свои - надо ковырять регистры Lua). Как изменился код? Вместо setElementHealth( Player, 70.0 ) стало просто Player:setHealth( 70.0 ), либо Player.Health = 70.0. По сути ничего не изменилось, как было императивное программирование так и осталось. Говоря о Наследовании, Полиморфизме и Инкапсуляции - имелось ввиду в самой Lua. ООП должно быть у нас внутри. А то что вы реализовали ООП на уровне ООП у себя - не говорит ничего. У вас весь МТА на ООП - и что? Реализация игровых режимов так и осталась на старом уровне. Посмотри на ту же реализацию Windows Forms и сравни с тем что мы имеем в МТА. В идеале я себе представлял что-то вроде этого: // Resource.lua class: Resource ( LuaBehaviour ) { Game = false; OnStart = function() // По сути тот же самый OnResourceStart // Так же сюда невидимым образом передаётся this (как в случае с source, client и т.п.) this.Game = Game(); end; OnStop = function() // OnResourceStop this.Game = NULL; // А тут должен сработать сборщик мусора и вызвать деструктор, если определён. end; }; // Game.lua class: Game { Game = function() // Конструктор // в котором мы уже делаем свои штуки: обращение к БД, создание машин и прочего. // лучше конечно реализовывать отдельными классами. end; _Game = function() // Деструктор // а тут мы сохраняем данные игроков, машин, %вставьте своё% в БД end; }; LuaBehaviour - это такой класс который имеет в себе всё необходимое. Из него происходят вызовы всех этих OnRender (OnClientRender) и т.д. С элементами должно быть точно так же, должен быть подобный класс, например VehicleGameType на базе которого будет строиться класс Vehicle уже самим пользователем. Ну и конечно учитывая данную ситуацию, класс Vehicle уже по умолчанию должен быть создан, иначе старые скрипты на "ООП" не будут работать. Дайте нам возможность создания собственных классов, со всеми выше указанными фишками (наследование и полиморфизм). Ты сам-то понимаешь, что 99% русских скриптеров в МТА не могут и пару слов связать на английском языке? Поэтому все предложения находятся на этом форуме. Я сам к примеру затрудняюсь порой общаться в IRC с кем либо, единственное с кем более менее получается - это с ccw и jhxp, с остальными не получилось наладить контакт. ccw за ООП не отвечает, и на сколько я помню отвечаешь за него - ты сам. Но тебя самого в IRC трудно поймать.
  20. Создание своих классов не предусмотрено. То что сделали в МТА очень сложно назвать "ООП". То что вызов происходит через точку\двоеточие не значит, что это ООП. Всё что и добавили в МТА - это всего лишь регистры для Lua позволяющие обращаться к userdata как к таблицам, т.е. вызов методов и доступ к членам. Больше ничего. В ООП как минимум должно быть Наследование, Полиморфизм хотя бы. В идеале конечно бы и Инкапсуляция ещё.
  21. Загнулся проект, потому что как ты говоришь "Взять просто команду программистов и 3 д дизайнеров" - не так уж и просто. Где взять? Через проект столько дизайнеров\художников прошло, что я даже не вспомню всех. Разве что кого-то нанимать за деньги, но у проекта их нет (откуда бы им взяться? ни спонсоров, ничего). Среди программистов пока только я, и Kenix который не внедрён в работу толком. Дизайнера нету, художника тоже. Сейчас пытаюсь девушку программиста (и художника по совместительству) втянуть в это дело Что касается группы - старую группу у нас отобрали просто, а новую можно найти по адресу vk.com/mtaroleplay Вобщем сейчас всё по новой, с нуля.
  22. https://ru.wikipedia.org/wiki/JIT-%D0%B ... 0%B8%D1%8F Пока побаловаться руки не дошли, думаю дойдут когда уже JIT войдёт в продакшн
×
×
  • Create New...