Kenix

Other Languages Moderators
  • Content Count

    4,146
  • Joined

  • Last visited

Everything posted by Kenix

  1. Введение Наверняка все хотели бы заменить транспортное средство на своём сервере, но подробного урока вы не нашли, то тогда этот урок будет для вас. Я решил расписать его очень подробно, чтобы любой смог понять его. Лично для меня это уж очень наболевшая тема, меня беспокоят очень часто ( особенно в ВК, на форуме, в скайпе ) и именно поэтому я решил написать этот урок. Я знаю, что урок простой, но всё же). Создание ресурса Для начала вам нужно перейти к папке с сервером МТА и перейти по следующему пути /server/mods/deathmatch/resources/ Тут находятся все ресурсы MTA. Примечание: В новых версиях МТА можно создавать папки для ресурсов. Папка должна иметь вначале [ и в конце ]. Пример: [gamemodes], [maps] и т.д Сам ресурс - это папка или zip архив, который содержит в себе meta.xml файл, этот файл указывает серверу как и что нужно загружать, также там могут быть различные настройки для ресурса. Подробнее вы можете почитать вот тут: http://wiki.multitheftauto.com/index.ph ... U/Meta.xml Примечание: В названии ресурса могут быть только латинские символы ( латиница ) и некоторые другие символы ( ! - _ ^ ; $ % @ - = + - [ { ' ~ ` ] } ( ) Это все допустимые. Нельзя использовать пробел в названии ресурса, иначе он не будет загружен. Чтобы не ломать себе мозг, то просто пишите все названия ресурсов латиницей и когда нужен пробел, то просто используйте нижний знак подчёркивания. Это уже дело вкуса. Примеры: abc, test, second_res и т.д ) Создадим ресурс и назовём его replace_vehicle. Путь будет таким /server/mods/deathmatch/resources/replace_vehicle В нём мы создадим meta.xml И напишем.. <meta> <!-- Скрипт, который будет заменять машину, его мы напишем чуть позже --> <script src='replace.lua' type='client' /> <!-- Файлы для замены машины --> <file src='models/euros.txd' type='client' /> <file src='models/euros.dff' type='client' /> </meta> Примечание: - это комментарии. После того, как мы создали ресурс, то создадим там папку models. В этой папке у нас будет находится модель транспортного средства. Сам путь будет таким /server/mods/deathmatch/resources/replace_vehicle/models Теперь мы должны скачать модель транспортного средства если у вас её нет. Транспортное средство состоит из 2х файлов с расширением .txd и .dff Найти модели транспортных средств вы можете в интернете, есть полно сайтов, где вы можете скачать это, лично я использую http://gtainside.com т.к там есть очень удобный поиск по категориям. После того как вы скачали их, то помещаем по этому пути /server/mods/deathmatch/resources/replace_vehicle/models/ В нашем случае для примера у нас будет модель, которая будет заменять euros. В конечном итоге путь для этих файлов будет вот таким: /server/mods/deathmatch/resources/replace_vehicle/models/euros.txd /server/mods/deathmatch/resources/replace_vehicle/models/euros.dff Создание Lua скрипта После этого нам нужно написать скрипт, который будет заменять стандартную модель транспортного средства на новую. Скрипт будет иметь название replace.lua т.к мы указали такое название в meta.xml и путь до него будет вот таким: /server/mods/deathmatch/resources/replace_vehicle/replace.lua Теперь нам нужно найти идентификатор машины для замены. Примечание: Все идентификаторы ( иды ) машин можно найти тут: http://wiki.multitheftauto.com/index.ph ... ehicle_IDs В нашем случае это 587. Открываем текстовый редактор. Желательно иметь знания Lua. Если же вы впервые, то вы можете почитать различные доки, мануалы тут: https://forum.multitheftauto.com/viewto ... 6ca4c84e1c Пишем.. addEventHandler( 'onClientResourceStart', resourceRoot, -- При запуске ресурса подгружаем и заменяем модель function() local iModelID = 587; -- Идентификатор модели, который мы нашли на wiki local pTxd = engineLoadTXD ( 'models/euros.txd' ); -- Подгружаем TXD файл engineImportTXD ( pTxd, iModelID ); -- Импортируем TXD local pDff = engineLoadDFF ( 'models/euros.dff', iModelID ); -- Подгружаем DFF файл engineReplaceModel ( pDff, iModelID ); -- Заменяем модель end ); Примечание: -- - это комментарии. Я уверен, что скрипт будет понятен всем. Заключение Я надеюсь вы поняли как заменять транспортное средство. Теперь вам остётся лишь запустить этот ресурс. Если у вас есть вопросы, то пишите.
  2. VM: Virtual Box Error name: Segmentation fault OS: Debian 9.9 (x64) RAM: 1.7GB CPU: 2 Version: MTA version r16569 (stable) (failed in another versions HEAD/etc) Additional: i had the same error using Docker with "ubuntu" image. Task: Just need to compile a custom MTA server. ================ Debian 9.9 (compile MTA SA r16569) gcc version: 6.3.0-18+deb9u1 Dump log: https://pastebin.com/itVUvLWQ Backtrace (using gdb mta-server64): https://pastebin.com/acSvH4BU Dump: https://upload.mtasa.com/u/974313768/server_1.5.6-custom_20190503_1231.dmp_ ================ Debian 8.11 (compile MTA SA r16569) gcc version: 4.9.2-10+deb8u2 Dump log: https://pastebin.com/DyPJxPC9 Backtrace: https://pastebin.com/utxwMnde Dump: https://upload.mtasa.com/u/287394891/server_1.5.6-custom_20190503_1611.dmp_ ================ Debian 9.9 (compile MTA SA HEAD) gcc 7.4.0.9 (updated) Dump log: https://pastebin.com/4CNAAW1V Backtrace: https://pastebin.com/LrResDcr Dump: https://upload.mtasa.com/u/218452296/server_1.5.6-custom_20190503_1814.dmp_ UPD: Stable version r16569 (from linux.mtasa.com) works well. This error affects only on self-compiled version. UPD2: starting mta-server64 with -n flag doesn't help.
  3. Problem resolved. Thank you so much. (incorrect net module throw the problem, maybe old version idk)
  4. I just run after compile ./linux-install-data.sh
  5. What can i try? any suggestions
  6. No, original from github
  7. Link: http://www.lua.org/gems/sample.pdf I think it should be useful for everyone.
  8. Kenix

    [src] client - Render events enchanting

    You can also add this in top of the script, it should increase performance. local unpack = unpack; local len = table.getn; -- instead of #, you can't # make as local variable. Here is an updated version: https://github.com/Kenix157/mta_render_events
  9. Надо камеру за пределы СА переместить во время замены моделей. Тут можно увидеть пример: https://wiki.multitheftauto.com/wiki/EngineReplaceModel_notes
  10. Портал Gamevs это игровые проекты: - RP BOX - MTA Oblivion Lost - GTA Race - и многие другие Нам требуются Lua скриптеры. Опыт работы в сфере MTA:SA будет большим плюсом. Зарплата выше средней по рынку, определится по результатам собеседования. В теме письма укажите "Работа". Мы также приглашаем к сотрудничеству различные проекты. В теме письма укажите "Сотрудничество". Ваши резюме отправляйте на почту (UPD: 08.01.19): akhramenko@rpbox.ru Желаем вам удачи на собеседовании!
  11. Kenix

    dxDrawRectangle

    Используйте interpolateBetween либо Lerp (ищите в интернете реализацию).
  12. Ну дак ты создаешь машину перед тем как проверить на наличия (аккаунта в acl.xml) в группе админа. Нужно проверять на наличие в группе ДО создания машины.
  13. setElementData привязан к элементу, очищать не нужно. Хотя если setElementData использовать на root, тогда нужно вручную удалять. (Сохраняется дата, даже если перезапустить ресурс)
  14. Kenix

    Архетектура МТА

    https://wiki.multitheftauto.com/index.php?title=RU/Server_Commands https://wiki.multitheftauto.com/wiki/Введение_в_скриптинг https://wiki.multitheftauto.com/index.php?title=RU/Server_Manual
  15. Kenix

    Вопросы и ответы по MTA.

    https://community.multitheftauto.com/index.php?p=resources&s=details&id=57
  16. При вызове рендера у вас происходит вызов функции глобальной. Чтобы это оптимизировать вы объявляете функцию локальной. Т.е чтобы добиться максимального эффекта вы можете сделать в одном ресурсе (в одном скрипте) следующее: local tocolor = tocolor; local dxDrawText = dxDrawText; local function dxDrawFramedText ( message , left , top , width , height , color , scale , font , alignX , alignY , clip , wordBreak , postGUI ) dxDrawText ( message , left + 1 , top + 1 , width + 1 , height + 1 , tocolor ( 0 , 0 , 0 , 255 ) , scale , font , alignX , alignY , clip , wordBreak , postGUI ) dxDrawText ( message , left , top , width , height , color , scale , font , alignX , alignY , clip , wordBreak , postGUI ) end addEventHandler( "onClientRender", root, function() -- Тут вызываете dxDrawFramedText end ); Также вы можете добавить условия, например по дистанции игрока от вас, если слишком далеко то соотвественно вызов функции у вас не будет и вы сэкономите FPS. В плане производительности - да. В плане написания больших проектов - нет, вам нужно будет так или иначе разделять логику по скриптам для удобства. UPD: То что я показал это самый быстрый вариант, далее по убыванию более худшие это: - Вызов глобальной функции (которая находится в другом скрипте, в том же ресурсе). - Использование OOP - метатаблиц. В Lua оно не особо быстрое, особенно в циклах. - Вызов функции, которая в другом ресурсе. Через call/exports[ "resourse" ]:Функция( аргументы ); Тоже занимает какое-то время. - Также занимает время вызов из Lua функции C++ (что мта и делает), но тут вы уже ничего не сделаете, даже попытка разработчиков MTA внедртить LuaJIT не имеет смысла. Такие хаки следует использовать на критичных по производительности местах (рендер и большие циклы). В обычном случае такого делать не стоит, вы только усложните все. Вроде ответил очень подробно, но если у вас есть вопросы то пишите.
  17. https://community.multitheftauto.com/index.php?p=resources&s=details&id=977
  18. Создайте отчет на баг трекере: https://bugs.multitheftauto.com/ Приложите всю информацию.
  19. На Wiki функции centerWindow есть пример. addEventHandler( "onClientResourceStart", resourceRoot, function() myWindow = guiCreateWindow( 350, 100, 200, 250, "Window Title", false ) end ) addCommandHandler( "center", function() if myWindow then centerWindow( myWindow ) end end ) При старте ресурса появится окно. Как только вы напишите команду /center окно будет отцентрировано под ваше разрешение экрана. Не забудьте функцию centerWindow скопировать и вставить в код.
  20. 1. MTA должна идти по идее на всех разрешениях. Если у вас не пошло на весь экран, то нужно создать отчет на баг трекере и приложить всю информацию. https://bugs.multitheftauto.com/ 2. В МТА используется абсолютные размеры интерфейсов (px) или относительные размеры (в % от экрана). В большинстве случаев используют абсолютные значения. Я в проектах использовал позиционирование вот так: Если это диалоговое окно на весь экран. https://wiki.multitheftauto.com/wiki/CenterWindow Если это HUD элемент то от ширины/высоты окна вычитал/прибавлял px размера интерфейса.
  21. + Определить все функции локальными переменными.
  22. Kenix

    Lua tutorials, manuals

    ATTENTION! First thing you must do before starting to script for MTA is to learn Lua. If you don't learn the basics of Lua language, it will be hard for you to script anything. I've compiled this list of tutorials and manuals, which should be useful for scripting beginners. http://www.lua.org/manual/5.1/ ( recommended ) http://www.lua.org/pil/index.html ( recommended ) http://lua-users.org/wiki/TutorialDirectory ( recommended ) http://lua-users.org/wiki/LuaFaq http://nixstaller.sourceforge.net/manua ... ler_9.html http://en.wikipedia.org/wiki/Lua_(programming_language) ( recommended ) http://lua.gts-stolberg.de/en/index.php http://www.luxinia.de/index.php/Tutorials/Lua http://forum.toribash.com/showthread.php?t=74001 http://lua-av.mat.ucsb.edu/blog/?p=39 ( recommended ) http://www.ozone3d.net/tutorials/lua_coding.php http://luatut.com/ ( recommended ) http://nixstaller.sourceforge.net/manua ... ler_9.html ( recommended ) http://wiki.roblox.com/index.php/Beginn ... Coroutines ( recommended ) Lua demo: http://www.lua.org/demo.html codepad.org: http://codepad.org/ ideone.com: http://ideone.com/ MTA scripting IRC channel: #mta.scripting List will be updated. If you have any other useful tutorial/manual links — post it.