Leaderboard
Popular Content
Showing content with the highest reputation on 12/07/17 in Posts
-
Hello everybody! I want to offer you a new language for writing scripts for MTA: SA. By the tags in the topic, you've already seen that it's Puthon 3. Many will say that Python 3 is bad for scripting, but it's not! It is similar to lua but has a wider OOP, and has the ability to connect modules. In the Internet very little material on lua, it is available but only in English, and what to do to the Russian community? The Russian segment in the MTA is very large, and lua materials are very small. Of course, the small amount of materials on the Internet for lua is not the reason for switching to Python 3. I understand that I will have to rewrite all functions from scratch, but this can prolong the life of the MTA. Python 3 is not one language that can be used as scripting under MTA: SA, there is also a wonderful language JavaScript v5. Many multiplayer use it as a language for writing scripts. This is just my opinion. I just suggested that the idea is not bad. Decide for you, dear multiplayer developers. Oh, sorry for my bad English!2 points
-
وعليكم السلام و الرحمة وظيفتها تقوم بتحويل التيبل الي عدد مثال TestTable = { 1,2,3,4,5,6 } outputChatBox(#TestTable,root) -- سيظهر لنا رقم 6 لأن هنالك 6 قيم داخل التيبل مثال اخر TestTable = { 111,222,333 } outputChatBox(#TestTable,root) -- سيظهر لنا رقم 3 لأن هنالك 3 قيم داخل التيبل مثال اخير local newcolshape = createColSphere ( 1, 2, 3, 4 ) -- نقوم بإنشاء كول شيب local players = getElementsWithinColShape ( newcolshape, "player" ) -- هذا الفنكشن سيحضر جميع اللاعبين المتواجدين في الكول شيب ويضعهم في تيبل outputChatBox(#players,root) -- والان نحول التيبل الي عدد لإظهار هذا العدد في الشات هذا والله اعلم2 points
-
الحل سهل استخدم outputChatBox مثال : addCommandHandler( "عام", function ( plr, cmd, ... ) local msg = table.concat ( { ... }, " " ) if not ( msg or msg == "" ) then return end outputChatBox ( getPlayerName ( plr ) .. " : " .. msg, root, 0, 255, 0, true ) end ) addEventHandler ( "onResourceStart", resourceRoot, function ( ) for k, v in ipairs ( getElementsByType ( "player" ) ) do unbindKey ( v, "t", "down", "chatbox", "say" ) bindKey ( v, "t", "down", "chatbox", "عام" ) end end )2 points
-
2 points
-
ما كأنك حقدت عليه شوي ؟؟ ياخي انسان حر وانت انسان حر مو لازم تضيق عليه الدنيا .. مو اي زلة يسسويها او اي شيء يسويه تتربصها عليه : (2 points
-
Thisdp's DirectX Graphical User Interface System ( MTASA 2D+3D DxLIB ) This dxlib provide dx gui functions and events to make it easier to use and alternative to change the style more flexibly. Features: 1. Update Check(DGS will notice you if there is a higher version, and you can choose to ignore it or disable it in the config file) Update Command: "updatedgs" 2. Dx GUI Types: Basic: Window Edit Box Button Grid List Image Scroll Bar Scroll Pane Text Label Tab Panel Detect Area Radio Button Combo Box Check Box Memo 3D Interface 3D Text Browser Switch Button Selector Plugin: Media Browser Color Picker Mask Remote Image QRCode Blur Box Rounded Rectangle Nine Slice Scaling Object Preview Support Canvas Scroll Pane's 3D Effect 3. Edit/Memo rewrite ( You can no longer find the problems in dgs, the problems which exist in cegui) 4. Detect Area is efficient when checking whether your cursor is in a complicated shape. 5. Debug Mode , Command: "debugdgs" 6. You can apply shader to the dxgui ( Compatible with some resources like Objec tPreview ). 7. Include CMD, Command: "dgscmd" ( For more help, please input "help" in the CMD ) 8. Memo/Edit rewritten. 9. Object Oriented Programming Class. 10. Render Target Failure Check ( Warns when there's no enough video memory to create render target ). 11. DGS resembles cegui, you can find the similar feeling when scripting with dgs. 12. 48-hour-response service, your suggestions and bug report will be dealt with in 48 hours ( or less, like 12 hours ? ) 13. Custom Style system 14. Built-in shader plugin 15. More properties 16. Built in multi-language support 17. Simple GUI To DGS (G2D) Notice:Do not close your server or stop the script when it is updating. Wiki: https://wiki.multitheftauto.com/wiki/Dgs ( Still Working In Process ) Auto Completion For N++ (Thanks To Ahmed Ly): http://www.mediafire.com/file/m6dm7815d5dihax/Lua.zip Discord Server: https://discord.gg/QEs8q6W Download DGS : https://github.com/thisdp/dgs Notice: Need acl rights to call fetchRemote/getPlayerIP. If you want to sell your script which involves DGS, please exclude DGS from your price. HurtWorld Backpack Panel(Example) DGS Network Monitor(Built-in)1 point
-
Heya, This is a small project I've spend three days on so far. I was bored of the same old desert so I decided to add a canyon. I feel like this gives the desert a fresh, new feeling while still retaining the good ol' San Andreas vibe. https://www.youtube.com/watch?v=RwetzEnNs-8&feature=youtu.be Things I've yet got to do: Create LOD models. Prelight the models so they fit in more with the enviroment. Small tweaks here and there. Let me know what you think! -Noah1 point
-
As the old topic is becoming increasingly cluttered (plus the title not being accurate anymore), here's an updated version with some new information. GITHUB: https://github.com/ciber96/mtadayz RELEASES: https://github.com/ciber96/mtadayz/releases DISCORD: https://discord.gg/th86Tmw DONATIONS: https://mta-dayz.org/donate.html FORUM: http://forum.mta-dayz.org/ We also offer three branches: master: Where experimental features are being implemented and tested. Once they are deemed stable, they will appear in the respective branch. stable: The version that is actually released to the general public and is (mostly) stable. legacy: This is an extremely old version, dating all the way back to April 2013. It's the genuine one, nothing has been decompiled. Feel free to use it! UPDATES [GENERAL]: - We took some time off development, as most of us are/were pretty busy with their private lives. There are internal discussions about how we should proceed with the gamemode (rewrite it from scratch, leave it to the next generation so we can focus on a new project, ...), with the latter currently being the main consensus. - The forum has been updated and received a complete overhaul. We also want to use it more frequently for feedback and suggestions, as we feel the Issues page of GitHub should be used for bugs. It's currently a bit bugged in terms of registering, as the current server settings do not allow for emails to be sent (something we are working on). A developer will periodically check the registrations page and activate accounts. UPDATES [GAMEMODE]:1 point
-
Hello, I'm Samer/Baseplate and I'm here looking for paid scripting opportunities. Who am I? I'm Samer 'Baseplate' Belgacem, it has been more than seven years as a regular and active MTA player. And I've been a lua scripter for more than 5 years. I'm currently 19 years old and doing computer science and telecommunications engineering, I have a huge experience with programming and everything related to scripting. What do I do? Pretty much everything as I will be showcasing below some of my scripts, I've worked on various projects as developer such as GTi, CSG, AUR, USG, etc.. I currently work for SANL as a staff member and a developer so feel free to join us. You can see some of my work during the last month in here. http://imgur.com/a/SiWtf How much money do I ask for? Depending on what resource/script you are asking for, I can't charge for a complex system that might take days as much as a simple resource that can be done within seconds but what I can promise is that we can work out a price that will satisfy you. How to contact me? You can either: - Message me on MTA forums. - Join my random, empty and lonely discord server https://discordapp.com/invite/aKQxh - Contact me on skype which I rarely use nowadays, samerbelgacem.1 point
-
السلام عليكم بدي اسوي مود لاكن احس فيه شبه مستحيل ض2 بدي لما اكتب ف F8 Show account تتطهر لي قائمة فيها حسابات مستخدمين ورمز حساباتهم لكي حتي اي شخص قام بنسيان كلمة سر خاصه به اقوم برؤيتها واعطاه رمز خاص به وشكرا1 point
-
حاليا حبايب قلبي انا فاضي محد عنده شي جديد نسويه اوه وبالمناسبه جالس احمل باتل فيلد 3 الحين فمافي شي اسويه محد عنده اي شي اسويه1 point
-
Your graphics card has a problem status/error code, please: 1) completely clean the driver with DDU (http://www.guru3d.com/files-details/display-driver-uninstaller-download.html) make sure to select Nvidia in dropdown so it wipes that, reboot your PC once done. 2) install this driver for your card: https://us.download.nvidia.com/Windows/384.76/384.76-desktop-win10-64bit-international-whql.exe 3) Install this chipset driver: https://downloadmirror.intel.com/20775/eng/SetupChipset.exe First see if that fixes your crash, if not, get back to me. I don't have much information on that specific crash at the moment.. Also was your GTA installation modded like it used to be before the Windows 10 update, or did you re-install from another source/added new mods?1 point
-
1 point
-
يرجل كل شي يسهله ربي فلها وربك يحلها قصدك مولتي جيم مود لا لا انا بسوي جيم مود فكرته خنشرافيه بنت لذينه ما سبق له مثيل في mta والله اعلم +_+ نيهاهاها جبت الفكره من روك مب من فكرتي نيهاهاهاها1 point
-
1 point
-
1 point
-
I've completed all the steps. Thanks, You solved my problem, I really appreciate that man. cya1 point
-
1 point
-
1 point
-
السلام عليكم ورحمة الله تعالى وبركاته طبعا كلكم تعرفون السكربتات اللي تشتغل مع الإكسبورت أو النتبيهات مثل توب بار شات وجيو مسج الخ جايب مود يشبه واحد منشور تقريبا لكن مو ولا معدل عليه ماخذ الفكرة المهم بسم الله نبدأ كيف شكل السكربت الجملة التركيبية للسكربت Server : exports["dxmessages"]:outputDx(player,string text,string type) player : أرجمنت اللاعب سواءا كان معرفا أو سورس أو مدري ذذ text : "" الكلام اللي تريده أن يجي بالنتبيه ويكون بين type : نوع التنبيه سواءا كان خطأ او صحيح أو معلومة الخ النتبيهات : "success" "info" "error" "warning" Client : exports["dxmessages"]:outputClientDx(string text,string type) أرجمنت الاعب لا يوجد ومانحطه لأنه كلنت ويطلع للاعب الحالي اصلا أمثلة Server addCommandHandler("hi2", function (player) exports["dxmessages"]:outputDx(player,"Hi "..getPlayerName(player).."","success") end ) النتيجة : Client addCommandHandler("HI", function () exports["dxmessages"]:outputClientDx("Hi World","info") end ) النتيجة ------------------ لما يجي التنبيه يجي بتأثيرات يعين من اليسار الى اليمين واذا كان في ثاني يجي تحته وبعد مدة يختفي ... ماقدرت أصور فيديو لأن جهازي خردة ------------- يرجى عدم تغيير اسم المود أو الإكسبورت الا اذا كنت تعرف شنو بتسوي ذذ السكرتب غير مشفر , التحميل أستغفر الله أتمنى تكونو فهمتو المود وأن يعجبكم وأرجو اي حد يتجنب يقول المود زارفه أو معدل أو شي لأن قلت فوق أخذت فكرة من مود ثاني لأنه عجبني وحبيت اسويه على طريقتي واخر دعوانا هي الحمد لله رب العالمين1 point
-
Скорее всего у вас создание всех UI интерфейсов происходит вместе с событием onClientResourceStart, который привязан к root, а не к resourceRoot. Именно по этому у вас все так и возникает. resourceRoot означает, что событие будет вызываться только для этого ресурса. Примечание: В вашем ресурсе может быть либо root либо getRootElement(). root это предопределенная переменная, root и getRootElement() имеют одинаковое значение.1 point
-
I think I get why the bug is provoked. You added a handler to the "onResourceStart" event and the "onClientResourceStart" one. Search for them and be sure they are like this: addEventHandler( "onResourceStart", getResourceRootElement( getThisResource() ), theOriginalFunction ) -- Replace 'theOriginalFunction' with your own function name addEventHandler( "onClientResourceStart", getResourceRootElement( getThisResource() ), theOriginalFunction ) -- Replace 'theOriginalFunction' with your own function name -- Look for 'onResourceStart' in server side scripts and for 'onClientResourceStart' in client side scripts.1 point
-
1 point
-
getAccounts setAccountData getAccountData تقدر تسويه يوم يسجل في لوحة التسجيل تحفظ كلمة السر في داتا على حسابه1 point
-
Lua - very simple language. That information on russian language, which available, is enough. And even better to just learn English.1 point
-
1 point
-
1 point
-
local intID = tonumber(intID) -- make sure it's an int local int,x,y,z = interiors[intID][1],interiors[intID][2],interiors[intID][3],interiors[intID][4]1 point
-
A few pages back I saw a way to remove MTA's hardcoded messages like "login: ", "logout: " etc. when the player logs in/out, But the only one which gets removed is the one when the player logs in, the others still show up somehow although I've included them to be removed: function removeLoginText(text) if text == "login: You successfully logged in" or text == "login: You are already logged in" or text == "logout: You logged out" then cancelEvent() end end addEventHandler("onClientChatMessage", root, removeLoginText) Just the "login: You successfully logged in" one gets disabled but the other two still show up. Why? Any way to remove them as well? I tried making different functions for each of them but still the same.1 point
-
1 point
-
function removeLoginText(text) if text:lower():find('login:') or text:lower():find('logout:') then cancelEvent() else return end if text:lower():find("already logged in") then outputChatBox() -- your own message elseif text:lower():find("something else") then somethingElse() end end addEventHandler("onClientChatMessage", root, removeLoginText) I think this would be the simplest way around it.1 point
-
1 point
-
function removeLoginText(text) if text:lower():find('login:') or text:lower():find('logout:') then cancelEvent() end end addEventHandler("onClientChatMessage", root, removeLoginText) Try that, there might be a space or something in the text, so they are not actually the same.1 point
-
local screenWidth, screenHeight = guiGetScreenSize(945, 736) local webBrowser = createBrowser(945, 736, false, false) function createBrowser() loadBrowserURL(webBrowser, "http://www.youtube.com") end addEventHandler("onClientBrowserCreated", webBrowser, createBrowser) function webBrowserRender() dxDrawImage(0, 0, 945, 736, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true) end function toggleBrowser() if isEventHandlerAdded("onClientRender", root, webBrowserRender) == false then addEventHandler("onClientRender", root, webBrowserRender) end if isEventHandlerAdded("onClientRender", root, webBrowserRender) == true then removeEventHandler("onClientRender", root, webBrowserRender) end end addCommandHandler("youtube", webBrowserRender) function isEventHandlerAdded(sEventName, pElementAttachedTo, func) if type(sEventName) == 'string' and isElement(pElementAttachedTo) and type(func) == 'function' then local aAttachedFunctions = getEventHandlers(sEventName, pElementAttachedTo) if type(aAttachedFunctions) == 'table' and #aAttachedFunctions > 0 then for i, v in ipairs(aAttachedFunctions) do if v == func then return true end end end end return false end I'm not sure if you can give arguments to 'guiGetScreenSize' though.1 point
-
1 point
-
بالتوفيق على العموم الطريقه ذي انا مستخدمها بالسيرفر القديم حقي وما كان فيها اي مشكله على العموم الاهم افادة صاحب الموضوع بالتوفيق للجميع+_+1 point
-
1 point
-
1 point
-
1 point
-
@Abdul KariM اشكرك جزيل الشكر , الله يسعدك :]] ي شيخ @Master_MTA اشكرك على المساعدة :]1 point
-
@Master_MTA كودك ماينفع زي كود عمر مايصير تحط الاحداثيات كلها وعندك كولمنين فقط جرب هذا مع كودي بس بدل الكلينت addEvent ( "setPlaces" , true ) addEventHandler ( "setPlaces" , root , function ( Table ) loob ( ) for index,values in ipairs ( Table ) do local row = guiGridListAddRow ( GridList ) ; guiGridListSetItemText ( GridList , row , 1 , values [ 'name' ] , false , false ) guiGridListSetItemData ( GridList , row , 1 , fromJSON ( values [ 'position' ] ) ) end end )1 point
-
1 point
-
1 point
-
ليه حاطه بتيبل ليه ما تخزنه بالسيرفر سايد بالداتا بيز؟ يعني كمثال سيرفر سايد طبعا executeSQLQuery ( "CREATE TABLE IF NOT EXISTS aTails_Places ( name , position )" ); tele = { {"=[ القفزه الخونفشاريه ]=",1541.0673828125, -1357.576171875, 329.46615600586}, {"=[ مقر الجيش ]=",146.66674804688, 1720, 17.640625}, {"=[ موقف الباصات ]=",1790.2674560547,-1912.0159912109 , 13.396838188171}, {"=[ الفنادق ]=",-1739.0821533203, 940.56231689453, 24.7421875}, {"=[ الشارع الطويل ]=",-3072.5554199219,-3000.345703125,5}, {"=[ بيت سي جي ]=",2491.12109375, -1667.4482421875, 13.34375} } addEventHandler('onResourceStart',root,function() local aResult = executeSQLQuery ( "SELECT * FROM aTails_Places" ) if ( aResult and #aResult == 0 ) then for k,v in ipairs(tele)do local xyz=v[2]..','..v[3]..','..v[4] executeSQLQuery ( "INSERT INTO aTails_Places ( name , position ) VALUES ( ? , ? )" , v[1] , xyz ); end end end) addEvent ( "addNewPlace" , true ) addEventHandler ( "addNewPlace" , root , function ( aName ) local aResult = executeSQLQuery ( "SELECT * FROM aTails_Places WHERE name=?" , aName ) if ( aResult and #aResult == 0 ) then local x,y,z = getElementPosition ( source ) local aPos=x..','..y..','..z executeSQLQuery ( "INSERT INTO aTails_Places ( name , position ) VALUES ( ? , ? )" , aName , aPos ); outputChatBox("تم إضافة المكان",source,255,255,0,true) else outputChatBox ( "هذا المكان موجود سابقا" , source ) end end ) ; addEvent ( "getPlaces" , true ) addEventHandler ( "getPlaces" , root , function ( ) local aResult = executeSQLQuery ( "SELECT * FROM aTails_Places" ) if ( aResult and type ( aResult ) == "table" and #aResult ~= 0 ) then triggerClientEvent ( source , "setPlaces" , source , aResult ) ; end end ); client side triggerServerEvent('getPlaces',localPlayer) function loob (table ) guiGridListClear ( GridList ) for index,value in ipairs(table) do local row = guiGridListAddRow(GridList) local allpos=split(value.position,',') guiGridListSetItemText(GridList,row,1,value.name,false,false) guiGridListSetItemData(GridList,row,1,{allpos[1],allpos[2],allpos[3]}) guiGridListSetItemColor(GridList,row,1,0,255,0) end end addEventHandler('setPlaces',root,loob) addEvent('setPlaces',true) جرب اي خدمه طبعا لو بتسوي كودي في نفس السيرفر لا تنسى تسوي دروب للتيبل الاول عشان يزبط1 point
-
Goddamn. Remind me not to post stuff when I'm half asleep. local spinTimer = {} function spincoin(player, cmd, ...) if not isTimer(spinTimer[player]) then spinTimer[player] = setTimer(function() outputChatBox("[Spin Coin]: Your spin is ready! Do /spin to test your luck", player) spinTimer[player] = nil end, 600000, 1) local text = table.concat({...}, " ") if not ... then outputChatBox("#2BFF00[Spin Coin]: #FFFFFFYour Spin is Ready use #2BFF00/Spin [money]#FFFFFFto Test your luck", player, 255, 255, 255, true) return end if tonumber(text) < 1 then outputChatBox("#2BFF00[Spin Coin]: #FFFFFFuse /Spin ( 1 - "..max_spin.." )", player, 255, 255, 255, true) return end if tonumber(text) > max_spin then outputChatBox("#2BFF00[Spin Coin]: #FFFFFFSorry, you cannot Spin Money more than #FF000010000 "..max_spin.."!", player, 255, 255, 255, true) outputChatBox(tonumber(text), player, 255, 255, 255, true) return end if getPlayerMoney(player) < tonumber(text) then outputChatBox("#2BFF00[Spin Coin]: #FFFFFFSorry, You don´t have enough money!", player, 255, 255, 255, true) return else coin = math.random(1, 2) if coin == 1 then outputChatBox("#2BFF00[Spin Coin]: #FF0000"..getPlayerName(player).." #ffffffhas spinned the coin and won #2BFF00+"..tonumber(text).."$ !", player, 255, 255, 255, true) givePlayerMoney(player, tonumber(text)) elseif coin == 2 then outputChatBox("#2BFF00[Spin Coin]: #FF0000"..getPlayerName(player).." #ffffffhas spinned the coin and lost #FF0000-"..tonumber(text).."$ !", player, 255, 255, 255, true) takePlayerMoney(player, tonumber(text)) end end else outputChatBox("You already used /spin in the past 10 minutes!", player) end end addCommandHandler("spin", spincoin)1 point
-
Space_Unicorn, Держи, может пригодится, углы поворота объектов уже указаны в эйлерах. не в кватернионах.1 point
-
1 point
-
This is my first post in this community, also I want to introduce myself in this thread; My realname is Ignacio and my in-game nick is mostly know as Zebra. I've been playing this game for four years and I'm still interested to play it more and more using my free time to spend it in many servers, especially ffs. Well, let's start with the title name "My themes", yes. I posted my themes in a community but I didn't posted them here so I decided to post it here to show you my stuff. Hope you like it guys. First theme: Elegant - The name is simple, Elegant because the theme is simple and clean and absolutely colorful (in-game it looks more decent than here). This was my first theme and I received many positive comments about it. Download: Mediafire: https://www.mediafire.com/?87qlvx01c4484ts Upload.ee: http://www.upload.ee/files/3944385/Elegant_theme.zip.html How to install: Open the ReadMe.txt into the zip. ------------------------------------------------------------ Second theme: Neon Strike - This is my second theme and you can see It's more colorful and similar as the movie/game called TRON (In-game it looks extraordinary). Download: Mediafire: https://www.mediafire.com/?4ldhzh62fkpgrd8 Upload.ee: http://www.upload.ee/files/4195730/Neon_Strike.zip.html How to install: - Neon Strike Interface: Go to your MTA directory and put it into the carpet called Skins, start your MTA and go to Settings -> Interface and select [Neon Strike] - Neon Strike Skin: Go to your MTA directory and put it into MTA/cgui/images (replace all items), start your MTA and be happy! That's all guys, I hope you like my work. I'll leave my Skype contact: ignaciomta Thanks for reading! Zebra.1 point
-
На счет скорости проблема известна, но на неё успешно забили 2 года назад.1 point
-
А теперь с небес на землю. Возможности МТА продвинуты только относительно SAMP. Если вы попробуете сделать что-то действительно серьезное, а не тот детский сад а-ля "я у мамы разработчик" что делают сейчас даже самые распиаренные и "продвинутые" проекты, то начнете спотыкаться обо все подряд: - чудесный Lua. Вычислительной мощности что на клиенте, что на сервере кот наплакал. Любой серьезный графический шейдер (один, нормальные тени например) просадит FPS раза в 2. Любые попытки сделать нормальных живых ботов закончатся тем же - клиент задохнется от перегрузки CPU, сервер при онлайне в 50-100 человек сдохнет от трафика. - баги. "Ах, вот если бы сделали проект, чтобы задействовали прямо все функции МТА, вот бы тогда все увидели какая МТА мощь!". Угу, только из этих функций процентов 5-10 забагованы или не работают. Ну казалось бы, их не так много. Только вот время разработки возрастает раза в 3-4 из-за того, что нужно эти баги обходить. - кривая архитектура. Что такое МТА? Есть ГТА сан андреас в котором существуют свои понятия и структура классов, есть МТА которая взламывает сан андреас для доступа к функциям и строит поверх первой свою собственную систему. Выглядит это все как-то так: Сделать что-то серьезное на таком фундаменте у Вас не получится. И дело даже не в багах МТА. Любой серьезный проект - сложный проект. Чтобы не рухнуть под собственным весом проект должен быть хорошо структурирован, должна быть продумана архитектура - деление одного большого на множество маленьких простых, и то как эти простые будут взаимодействовать между собой. Так вот, стройную большую систему у Вас построить в МТА не получится. Количество кода который будет фиксить баги и выпрямлять искривления в определенный момент станет таким, что баги начнут сами с собой взаимодействовать и порождать новые баги. Добавьте к этому то, что с каждым новым унаследованным классом скорость работы системы падает по экспоненте (а у Вас ее и так кот наплакал) - и Вы получите естественный физический лимит возможного качества Вашего проекта. Итого: любой серьезный разработчик выберет нормальный игровой движок с открытым исходным кодом (Unity, UE, CE). Посему ждать по-настоящему прорывных проектов в МТА не стоит. Хороша ли МТА? Однозначно да. Для первых шагов в области разработки и проектов низкого уровня сложности, либо проектов с какой-либо одной очень продвинутой фишкой. Сможет ли МТА обогнать SAMP? Не думаю. Выдача гугла по поисковому запросу "GTA SA multiplayer" похоронит даже самый продвинутый проект. Есть надежда на ютуб, но время идет, а графический и физический движки в МТА ни капли не лучше чем 10 лет назад.1 point
