Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 03/09/16 in Posts

  1. Dear Multi Theft Auto players and supporters! Today is the 20 Year Anniversary of Multi Theft Auto! On the February 9th 2003, a rudimentary GTA3 multiplayer prototype was released by our founder, IJsVogel. It did not take long for contributors to join the effort and turn it into a real multiplayer mod. The mod IJsVogel created was originally named “GTA3: Alternative Multiplayer”, but soon after it became “GTA3: Multi Theft Auto”. The Multi Theft Auto (MTA) name became the identity of all following projects. As new GTA games were released, new projects were created for GTA3, GTAVC, GTASA and GTAIV. Respectively, the main project names are: GTA3:MTA, MTA:VC, MTA:SA, MTA:IV. The development during GTA3 showed what the team was capable of with enough learning and reverse engineering. At this time, game modes were made for deathmatch and vehicle stunts. These game modes were hard-coded into the mod and could not be altered. It was not perfect, but it was an amazing accomplish for the time. Not only was it the first multiplayer for GTA, but it was an unprecedented undertaking. An early version of GTA3:MTA 0.2 (client and server). Some time in the first half of 2003. The working experience on GTA3 laid the framework for the second project, MTA:VC. It did not take long after GTA: Vice City for the 1st version of MTA:VC to release. The MTA Team succeeded in creating the basic multiplayer functionality much quicker through past-experience. At this point, MTA was well-known and there were mentions on gaming websites, magazines and even a TV interview on the gaming channel G4TV. Even Rockstar Games developers, the creators of GTA, contacted the MTA Team from time to time. The MTA:VC mod still offered a hard-coded deathmatch and vehicle stunting game mode that could not be altered. However, it had better synchronization and supported many new features. When GTA:SA came out, the contributors to the project were much more seasoned and mature. The 3rd project, MTA:SA, was much more ambitious. Although the first release was restricted to racing in vehicles, it was a proof of concept for a vastly superior framework that empowered users to make their own content. An editor was produced to allow in-game editing for the first time. When the full-featured product began development, a constantly evolving Lua-based scripting system accompanied it. This allowed the user to manipulate game code and modify various settings, elements and added features to create unique servers and game modes. Some added features include: voice chat, custom GUIs, web browser components. The MTA Team had the foresight to release this modification to the public as Open-Source code to attract future developers and embraced many new tools of game development that have become commonplace today such as installers, bug reporting, nightly builds, wiki documentation, anti-cheat, and Steam version support to name a few. MTA:SA 1.1 public tests. August, 2011. The release of GTA:IV did result in the beginning stages of MTA:IV, but once Rockstar released their official multiplayer, many of MTA’s most seasoned developers and contributors were ready to move on with their professional lives. Providing the same level of quality to GTA:IV would have been an extreme undertaking. It was decided that the best course of action would be to discontinue further projects and continue making MTA:SA better. The MTA:SA project still receives Open-Source contributions and still retains a consistent player base that is large enough to make developers of new games jealous! Thank You We would like to thank everyone who helped and participated over the years: developers, community/clan leaders, moderators, patch contributors, helpers, donators, testers, translators, scripters, mappers, server hosts/owners, streamers, players and fans. There were hundreds of thousands of such people over the years and they all had their place here. Many people have come and gone. Some are still very young and some are quite old now! Some of us have even developed life careers from our experiences working on this modification. We had the honor of befriending a lot of wonderful people in various stages of the project and many were just as enthusiastic about MTA as we were. Multi Theft Auto would not be here right now, had it not been for their hard work, interest and dedication. No seats? No problem. Screenshot from MTA:SA 1.0.5, taken by Zango. August, 2011. The social aspect has always been strong in MTA. No one knows what the future will bring, but there are things that will remain regardless of anything - and that is the time you all have spent here and your memories. Feel free to share your MTA stories in the comments! Feel free to say hi to us in Discord as well! Thank you all past and present MTA staff members, players and fans for sticking with us! Happy Birthday, Multi Theft Auto! Onwards to the next 20 years or more! -MTA Team
    48 points
  2. Hello everyone! We have prepared a special gift for you to celebrate Multi Theft Auto's 20th Anniversary! Here is an exclusive interview with IJs (also known as IJsVogel), the founder and first developer of the Multi Theft Auto project. Read on to see his thoughts on the project in retrospective. Note: more details about Multi Theft Auto's history and timeline can be found on our Wiki article. What had prompted you to create the very first multiplayer mod for GTA3 - a game that did not offer such a feature out of the box? Wow, it has already been 20 years.. I remember the reasoning behind it very vividly! As I grew up in the 90s I was lucky enough to be surrounded by PCs, early internet and PC games from the very beginning (of myself). I was a very fanatical player of Grand Theft Auto 1 and 2, especially so because these games had a multiplayer mode that I could play at home with my brothers. Then, finally in 2002 when GTA3 came out for PC, I was 13 at the time and completely astounded at the possibilities of this 3D open world version of my favourite game for the first couple of months. After a while, it sinked in that this game was missing any ability at all to play with others, which put a huge dent into my appreciation for the game... At the time, I never really played the storylines of games because it didn't quite fit my youthly attention span (my older brother always left the savegames for me to play) and was usually more into the multiplayer and modding aspects anyway. Two completely coincidental things then sparked the start of an attempt at multiplayer. First, a fake French screenshot was being sent around forums, showing a multiplayer mod for GTA3. This raised my hopes tremendously and I was looking forward to testing this so much. When it turned out to be another hoax, my hopes were in shambles and I began thinking about hacking something together to do it anyway. A screenshot of a fake multiplayer mod in GTA3. Surfaced in July, 2002. Secondly, some coders had just released a trainer/cheat tool for GTA3 including its source code in Visual Basic 5 or 6, which was the only language I knew at that time as I was only 14 by then. I started hacking around with the tool to make a synchronized trainer tool, and figured I might as well synchronize car positions, and a very crude attempt at multiplayer was born and it was dubbed GTA3: Alternative Multiplayer (GTA3AM). It was amazing to see it work, it seemed such a stupidly simple hack! This was the first effective prototype of Multi Theft Auto. A not-so-fake GTA3AM 0.1 Client window, win9x style! February, 2003. Were there other people who shared your idea and wanted to contribute? Was it easy to find them? The initial GTA3AM was posted on a well-known Dutch tech forum, and this raised some attention from people over there. It wasn't so much a conscious decision to find people, people really wanted to contribute and we gathered on IRC, with some people helping out with the website, server donations and coding. This grew organically as the users grew. The first months or so was mostly Dutch techies helping out, including a well-known provider sponsoring our hosting, and after the first year or so the team became very diverse, international and well skilled. I am still very grateful for each and every contributor to this project from the very start and later, also because I was still very young at the time, and the project would not have been able to thrive on my contributions alone. I have had the fortune to meet and work together with some of the most skilled people I've met in my entire life, as well as people who simply loved playing around with our creations. Work on ambitious projects like this typically involves solving tough and unusual problems. What was the most significant one that you and the team had to deal with during your time in MTA? And perhaps, maybe there was a really peculiar problem that you also would like to share? MTA has been an amazing learning curve for me, and I believe many other contributors in its 20 year lifetime, to acquire a very special mix of skills. We have had tremendous fun and also frustration engineering the hell out of all sorts of things, and trying to tie worlds together over a network. There are countless things that were tackled and pioneered (even if only personally) in this project, so it is hard to pinpoint out a single thing. I think one of the most groundbreaking efforts of this project however was to restructure the entire project and release it as open-source to the world. As part of that we spent much effort to restructure everything using git (this upset quite a few developers at the time) and published it in 2009 or so on GitHub when it was still in its infant stage (GitHub even mentioned us on their blog at the time). A bit messy in MTA:SA Racemod internal tests. Some time in the second half of 2005. If you had a chance to start this project again, would it be closed-source as it initially was, or would you prefer it to be open-source like it is now? It would certainly be open-sourced again, probably as early as possible. The facilities for open source projects are much, much better now than 20 years ago as well. The move to GTA:SA kind of left the multiplayer mods for GTA3 and GTA:VC in the dark. While there were some alternative mods developed for these games, they did not really leave a lasting impact in the long run. Have you or the rest of the team ever considered bringing back the support for GTA3 or VC after MTA:SA DM 1.0 was released? I do not think there was ever a strong will to revive the GTA3 or GTA:VC versions, because GTA:SA by all means had a better and more capable engine. Perhaps in today's open source world, where contributors are easy to find, it could have had a better chance. My personal opinion (or fantasy) at the time was to "just" build our own game behind it instead, but that obviously never took off. Development build of MTA:VC Blue. Some time in the second half of 2004. What in your opinion are the strongest points of Multi Theft Auto (be it the original 0.x series or MTA:SA)? What do you think the project especially succeeded in? The critical mass of players and contributors, that never seems to die out, and it keeps surprising me. The incredibly challenging technical issues we have had to solve (and still do), sometimes from the ground up. This makes for a very exciting sandbox to work in as a developer or hacker. And in contrast, do you feel there are any shortcomings in MTA? I think one of the missed opportunities in MTA is that we could have developed a bigger framework or other products on top of all the codebase we had written. A bit messy again, this time during MTA:SA DM internal tests. December, 2007. Thinking back, are there any things in the project that you think you would have done differently nowadays? I would have loved to have set up a much more professional collaboration with the entire team that were around at the time the project was open sourced around 2010, using all the knowledge we had all acquired in the process of making MTA:SA 1.0 when it was still very hot. With the knowledge on startups that I have now, I realize that had I been 5 or 10 years older, I might have had some better idea on how to take it to a level to possibly develop our own game(s) or framework on top of it. But alas, for MTA's sake it turned out good either way! The MTA Community is very large these days and scattered across all continents, but that was not always the case. What was the community like back in your time? As with most (modding) projects you usually start out with a very niche audience. For MTA, this was a direct result of me posting on a Dutch tech forum and as a result, the initial contributors in the first months were mostly (if not all) Dutch and Belgian. With the GTA series obviously being a hit in the Western world, more people wanted to contribute (and play). Nearly all of them came from the US, UK, Central and West Europe and the Nordic countries, with a few notable exceptions. I think this pretty much mirrored the demographics of the GTA series themselves. Let's race! Beta tests of MTA:SA DM. December, 2007. I have noticed that you have been involved with various tech projects after retiring from MTA. What are you up to currently? Was your experience from working on MTA useful in these projects? Among some other startup adventures in the past years, I currently lead an audio software company called KoalaDSP that develops virtual audio plugins, instruments, effects and algorithms for a bunch of very big companies out there. We started this company around two years ago in Amsterdam after some previous endeavours, and with around 10+ people working on some crazy software being used in music and home studios around the world. But Multi Theft Auto has given me a lifetime passion for video game development, and after many years or scribbles and notes, I have finally found the time and people around me to developing my second (..after MTA) game idea using 90s retro graphics and voxels. I feel quite strongly that my experience with Multi Theft Auto has been a unique and once-in-a-lifetime gift of skill, much adventure and lasting connections with others. I can't quite pinpoint it, but it feels special. I hope that also still holds to this day for any contributors out there. A long-running project like MTA also means a lot of memories. Do you have any fond or interesting memories from your time working on the project that you would wish to share? I have so many memories of my time during MTA, it is hard to pick out something! Apart from the early memories of all the excitement, healthy stress and testing with all these people during the very, very early days, there is something I remember from a bit later: There was a pretty far-fetched and secret clandestine plan from some of our developers to put a live editor into one of the first MTA:SA releases. Like often with our features, it was really a coding challenge, a show of skill. Are you skilled enough to build this crazy thing? They figured that, in order for the community to enjoy using our mod, they needed an engaging way to create content. So they started building a complete editor inside the game. It required a tremendous amount of work, but they kept to it, others started contributing, and it ended up as one of the key features of the entire release! Some say that editor served as an inspiration to other mods, possibly other games afterwards. Internal tests of the cancelled MTA: Orange. April, 2010. To wrap things up, is there anything that you would like to say to current MTA Team members and/or to MTA fans? Thanks for putting your enthusiasm (and many wasted hours of gaming!!) into this amazing project. Props to all the contributors, past, present and future. MTA, the way it's meant to be played! Interviewed by jhxp.
    47 points
  3. Multi Theft Auto: San Andreas 1.5.6 is released Today the MTA team is delighted to announce the release of MTA:SA 1.5.6. You will receive an automatic update soon, but if you don't have MTA installed, you can get it from the home page . There are many changes and improvements across the board, but one feature stands out as being especially exciting: custom animations! This has been a feature on our radar for many years, and @Saml1er was the one who decided to make what many have considered a dream, a reality. Take a quick look at this video of custom animations in action to get a glimpse of what's possible: Changes This release includes many additions, improvements, and fixes. Find the complete set of changes, and more information about the improvements listed below, in the 1.5.6 release notes. If you'd like to keep on top of all the things we're working on, why not watch or star our GitHub repository? Here is a heavily cut-down selection of features and fixes. Highlights: New features Ordered roughly by reverse chronological order New languages Bulgarian, Indonesian and Chinese (Traditional) (a3217) New server console feature for arrow command history (#274 by myonlake) New ACL property ModifyOtherObjects.resourceName for one resource only (6614d) New element functions getElementAngularVelocity, setElementAngularVelocity (#73 by lex128) New chat function clearChatBox (#215 by CrosRoad95) New vehicle functions getVehicleRespawnPosition, getVehicleRespawnRotation, setVehicleRespawnRotation (#334, #338 by l0nger) New goggle effect parameter "noiseEnabled" parameter to setCameraGoggleEffect (#324 by samr46) New drawing function dxDrawCircle (#266 by CrosRoad95, Saml1er) New jetpack functions setPedWearingJetpack, isPedWearingJetpack (#243 by Dezash) New element function getElementsWithinRange (de149) New GUI functions guiWindowIsMovable, guiWindowIsSizable, guiEditGetMaxLength, guiEditIsMasked (#272, #255 by FileEX) New fire function extinguishFire (#207 by CrosRoad95, #252 by myonlake, also 7838b) New world functions getPedsLODDistance, setPedsLODDistance, resetPedsLODDistance (#231 by CrosRoad95) New GUI scrollbar functions guiMemoSetVerticalScrollPosition, guiMemoGetVerticalScrollPosition (#248 by myonlake) New GUI functions guiMemoIsReadOnly, guiEditIsReadOnly (#236 by FileEx) New special property "underworldwarp" (#208 by CrosRoad95, #222 by myonlake) New vector support for collision functions (#217 by myonlake, #163 by Pawelo / 4O4) New animations functions setPedAnimationSpeed, engineLoadIFP, engineReplaceAnimation (Saml1er, with some help from Icensow, raw data loading courtesy of #247 by samr46) New colshape function isInsideColShape (#195 by tederis) New vehicle function for client-sided setVehicleHandling (#192 by Renkon) New world sound parameter to setWorldSoundEnabled to stop sound immediately (44844) New ped weapon function isPedReloadingWeapon (#149 by Neproify) New debug hooks pre/postEventFunction added to addDebugHook (#126) New event parameter "deleted" add to onResourceStop (98502) New vehicle function isVehicleWheelOnGround (#146 by ZReC) New command reloadacl (#131 by Timic) Enable switching camera view mode for trains (#125 by ZReC) New encode functions encodeString, decodeString (#184 by SDraw) New pickup events onPickupLeave & onPlayerPickupLeave (#176 by emre1702) New account functions getAccountIP, getAccountsByIP, getAccountsByData & setAccountName (#164 by emre1702) Highlights: Bug fixes and tweaks getChatboxLayout now works as advertised (#254 by myonlake) Return 2 vectors for ele:getBoundingBox (#305 by Pirulax, #332 by Addlibs) Fix inconsistencies in reading userdata in Player functions (#308 by Addlibs) Improve debug info for garbage collected files (#312 by Dezash) Fix crashes with account functions when using empty strings (faa57) Missing bShallow for server-side water (#240 by myonlake) Fix spawnPlayer rotation not working properly (#258 by myonlake) Fix false elements in getElementsWithinRange (#300 by Sergeanur) Removal of the /whowas command (0cffa) Improve connect to disconnect you less frequently (7fc29) Make connect port argument default to 22003 (d698b) Fix many bugs related to animations, jetpack and choking (#229 by myonlake) getVehicleType not being consistent server/client side (b08f3) Fix custom CEGUI skins accidentally breaking dxDrawRectangle (4e57a) Ignore colorcodes while tabbing in chatbox (#238 by Timic) Various bind tweaks, please tell us if something is broken (by emre1702) Fix empty string in getVehicleNameFromModel (instead of false) (#219 by emre1702) Weather blending improvements (#204 by emre1702) Fix 'stream_title' meta tag when the playback is started (#206 by Sergeanur) Fix problems when using a controller with more than 7 axes (382a3) Console no longer displays an error message when pressing the key of a disabled MTA control (23dad) Fix crash caused by calling client-side setPlayerNametagShowing with a ped (554a2) Fix server crash on server-window resize (becf0) Download This release is backwards compatible with the older 1.5.x releases (1.5.5, 1.5.4, all the way to 1.5). However, if you would like to take advantage of all of these useful changes, you will need to go and download the update! Servers: binaries are available, and don't forget to update your default resources. What's next? We're continually working on new features and fixes for MTA. If you're happy to report bugs and crashes do try out our Nightly release stream. You can do this by going into Settings -> Advanced -> Auto updater -> Update build type. Change to "nightly" and hit "Check for update now". Only do this if you like crashing and like filling out bug reports. We're also working on a brand new community: we want your suggestions, ideas and feedback! If you have any questions or would just like to chat with the community, do check out our official Discord server. We have channels for scripting, general support (bugs), mod development, and many more! Thank you! Thank you very much to the following community members for their work towards this release: Addlibs, ArranTuna, CrosRoad95, Dezash, Dutchman101, Einheit-101, emre1702, FileEX, forkerer, Icensow, jlillis, l0nger, lex128, lopezloo, MIKI785, myonlake, Neproify, Pawelo / 4O4, Pirulax, Renkon, samr46, SDraw, Sergeanur, tederis, Timic3, ZReC, and many others who helped document on the wiki, reported bugs, and helped out with issues. (If your name is missing or you want to change your entry above, please PM @qaisjp) You could be on this list! We're always on the lookout for new contributors. Contribute on GitHub, and chat with us on Discord. Finally, everyone, please give a ? to the newest maintainer of Multi Theft Auto: @Saml1er. Until next time, The MTA Team
    44 points
  4. Multi Theft Auto: San Andreas 1.5.9 is released! Happy autumn! We've been working hard and today we're proud to announce the release of MTA:SA 1.5.9. You will receive an automatic update soon, but if you don't have MTA installed, you can get it from the home page. Statistics This is the 26th 1.x.x release 355 days 49 new functions 16 new events 0 deprecations 77+ bug fixes and changes 334 commits (see comparison) 189 new open GitHub issues (see list) 81 resolved GitHub issues (see list) 135 closed GitHub issues (see list) 71 new open GitHub pull requests (see list) 207 merged GitHub pull requests (see list) 53 closed GitHub pull requests (see list) 38 contributors of which 11 are new (see list) 94+ total contributors (see list) 13 vendor updates Download This release is (mostly) backwards compatible with the older 1.5.x releases (1.5.8, 1.5.7, all the way to 1.5). If you're a server owner, please take note of the Changes in 1.5.9 wiki page, more specifically the Backwards Incompatible Changes. You may need to update your scripts for 1.5.9. Servers: binaries are available. Don't forget to update your default resources. WANT TO DOWNLOAD THE MOD? CLICK HERE (Win7/Win8/Win10) Twitch We hosted a community livestream event at the end of July which was very nice! We hung out and played MTA with you on various servers. You can watch a recording of the livestream on our YouTube channel at https://youtu.be/n2KcspT0F0A. We wish to do more of these livestreams soon! Merch We launched a 100% non-profit merch store on Spreadshirt earlier this year! If you feel like getting some of that official MTA swag, check out the merch store here: https://multitheftauto.myspreadshop.net/all and wear that MTA gang drip at school or work. Check out https://streamlabs.com/mtaqa/merch for merch! AMX (SAMP) amx is a software package that allows the execution of unmodified San Andreas: Multiplayer 0.3.7 gamemodes, filterscripts and plugins on Multi Theft Auto: San Andreas 1.5.8 and higher servers. It is open source, and a prebuilt binary for Windows is available for testing purposes right now. The AMX team hopes that more people get involved with the development on GitHub as they need some help! Check out our GitHub repo for more information on how to use your SAMP scripts in MTA! 1.5.9 Highlights This release includes many additions, improvements, and fixes: You can now use the new onPlayerResourceStart server-side event to trigger when client is ready! Thanks to @Lpsd You can now detect element interior or dimension change through two new client and server-side events onElementInteriorChange and onElementDimensionChange – should reduce some of your code! Thanks to @Patrick and @Strix You can now edit element bone behavior through 7 new bone manipulation functions! Great for some dynamic animations. Get started at setElementBonePosition and setElementBoneRotation. Thanks to @Saml1er More vehicle customisation options! You can now edit vehicle dummy positions per vehicle. See setVehicleDummyPosition. Thanks to @botder More audio customisation with sound effect parameters! See setSoundEffectParameter. Thanks to @Strix and @Sarrum More client download transfer box customisation options! See for example onClientTransferBoxProgressChange. Thanks to @botder and @CrosRoad95 You can now allocate custom objects and vehicles through engineRequestModel. One of the most sought after features in a long time. Thanks to @TheNormalnij You can now use scalable vector graphics (SVG) in MTA! See svgCreate for more info. Thanks to @Lpsd You can now use peds and vehicles as the camera target. Thanks to @TheNormalnij A lot more features for scripters to build even more immersive experiences with! Many synchronization improvements! Many varying size fixes, quality of life improvements, updates and security enhancements! Many default resource fixes, refactors and upgrades, including webmap working once again! We have also improved the detection of world objects in map editor (editor_main resource), so you can select many more objects that you couldn't before - such as bushes, fences and many more! You can now also remove world objects inside interiors. This should help mappers a lot. If you are a scripter, you really should wanna dig in to these improvements! Show off your creations on our #showroom channel on our Discord server and have a chance at getting your work featured on our social media pages. Read the 1.5.9 release notes for a complete set of changes and more information about the improvements listed below. Watch or star our GitHub repository to keep on top of all the things we're working on. Important future script changes This will be the last 1.5 update and in the next version of MTA there will be numerous backwards incompatible changes and refactors that may affect old code. We will try to focus on making migration from 1.5.9 to the next version smooth for everyone. From 1.6 onwards we will be making at least the following changes: callRemote callbacks currently set the error code to nil when there is no error. In 1.6, to be consistent with fetchRemote, the error code reported will be 0. See GitHub #294. Since July 2016 if you provide an invalid string like "randomstring" when a function expects a number, the string will be treated as 0 and raise a script warning. In 1.6 this will be an error. You will still be able to provide strings containing numbers (e.g. "100" and "12.34"), this change only affects invalid strings. See GitHub #1043. When providing a width and height of (0, 0) to createBrowser or guiCreateBrowser you will encounter a script error instead of a warning. The warning was introduced Feb 2019. See GitHub #1069. Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error. See GitHub #1070. Since Aug 2015, we replaced the custom mtalocal:// URL scheme with http://mta/resourceName/blah.html. This mtalocal:// URL scheme will now be removed. See GitHub #1071. This list is incomplete and we may introduce more changes later. What's next? Our eyes are now on the next version of MTA, which will break backwards compatibility in many ways as we work to refactor MTA's codebase. We are looking to host more community livestreams in the future, especially when we get further into the development of the next version of MTA. Stay tuned for more info most likely starting next year! We are also still working on our community 2.0 website with an internal goal of having phase 1 of development finished by August 2022. Latest news on this is that we've had major advancements on our stack which has been long overdue. We have also continued design on both backend and frontend. We will keep you updated should any news on this project surface. Multi Theft Auto depends on community input and contributions. To keep a project like MTA going we need LOTS of people. You can help in the following areas: Testing and bug reporting Whenever you encounter a bug or recognise a need for improvement, we can't fix it until you tell us your problem! We're continually working on new features and fixes for MTA, and this always needs testing. Join our Nightly release stream and make sure you keep in touch with on Discord and report issues on GitHub. Programming If you know C++ you may be interested in helping improve Multi Theft Auto's client. Working on open-source software may seem scary, but the best way is to try! Read GitHub's open source guide, and then find an itch to scratch, or scratch your own! Documentation Documentation is important, but also time consuming. If you enjoy writing and have some knowledge of English, or you would like to translate the English version to your native language, you’re very welcome to do so. Just head over to our wiki, create an account, and start editing! Support Do you like people? Can you give calm and thought-out responses to users needing help? Then you can spend some time providing support to those who need it. Many answers can be found on our wiki, so make sure to take some time to read it. Then, either join our chat or forums (linked below), or simply help us sort out issues and answer questions on the GitHub repository. Translation Want to translate MTA to your own language? Awesome! Visit us on Pootle. As soon as your translation is approved, it will be pushed to our repository for use in future releases. Donations Keeping the MTA downloads, master server and websites alive costs money! If you want to help us sustain our financial expenses, please donate! Show your creativity! We are actively looking for new creations on our #showroom channel on Discord, as well as #mtasa on Twitter for content we would like to repost on our social media pages and pin on our annual recap forum post. Follow us on our social media channels: Twitch, YouTube, Facebook, Reddit, LinkedIn. Thank you! Thank you to the following community members for their donations this year: @Arran, @Azukie, @Dmi7ry, @IIYAMA, Malone, Berni, @NoHear, lupinek, @Flatliner_, @Sarrum, Shine, @Trumavarium Thank you very much to the following community members for their work towards this release: @botder, @myonlake, @Pirulax, @TheNormalnij, @sbx320, @Dutchman101, @Strix, @qaisjp, @Zango, @Sarrum, @Lpsd, @Jusonex, @Woovie, @cleopatra, @Saml1er, @Patrick, @TEDERIs, @ccw, @fastman92, @Allerek, drop-club, @CrosRoad95, @iDannz, @JeViCo, @STR6, se16n, @FileEX, delinx, emre1702, @Disinterpreter, @LosFaul, @NanoBob, @pieT, PauloKim1246, ecastro98, @Luxy.c, Unde-R, TeteX1, @The_GTA, @leetIbrahim, @mertcan4555, @Lvrent, @Inder00, @Arran, @iDannz, @xLive, jlillis, ricksterhd123, @srslyyyy, @androksi, Yamsha75, @AfuSensi, Dark-Dragon, umithyo, brenodanyel, Mkl21, 1lyncon, Dante383, @turret001, Dezash, @Deihim007, @0xCiBeR and many others who contributed to our Wiki and helped out with issues. (If your name is missing or you want to change your entry above, please let us know on Discord!) You could be on this list! We're always on the lookout for new contributors. Contribute on GitHub, and chat with us on Discord. We have channels for scripting, general support (bugs), mod development, and many more! And one more thank you to every member of the MTA staff who helps support this forum and Discord. Without your efforts, this project would not be nearly as successful as it is now. Also a big thank you to the new MTA helpers team who support our users on this forum and Discord! Finally, please give a ? to our newest staff members @androksi, @Pirulax, @Sarrum and @xLive; newest contributors colistro123, @Pirulax and @TheNormalnij, as well as our newest addition to the MTA team @myonlake! Have a good autumn! — MTA Team
    41 points
  5. Multi Theft Auto: San Andreas 1.5.7 is released Today we are proud to announce the release of MTA:SA 1.5.7. You will receive an automatic update soon, but if you don't have MTA installed, you can get it from the home page. This is the final release to support Windows XP and Vista — if you still use Windows XP or Vista, upgrade Windows now. We are also looking for a web designer to help us create a new website! Statistics Multi Theft Auto: San Andreas turned 10 years old last week. Happy birthday! This is the 24th 1.x.x release 359 days since our last release 27 new functions 4 new events 117+ bug fixes and changes 540+ commits 30 contributors, of which 7 are new 64+ total contributors Download This release is backwards compatible with the older 1.5.x releases (1.5.6, 1.5.5, all the way to 1.5). However, if you would like to take advantage of all of these useful changes, you will need to go and download the update! Servers: binaries are available. Do not forget to update your default resources. Highlights This release includes many additions, improvements, and fixes: New drawing functions dxDrawPrimitive and dxDrawMaterialPrimitive Improved performance Fix swimming speed on higher FPS Skimmers can now lift off water at high FPS New events onClientWorldSound, onClientPedStep, onClientVehicleWeaponHit Surface property functions like engineSetSurfaceProperties and much more! Read the 1.5.7 release notes for a complete set of changes and more information about the improvements listed above. Watch or star our GitHub repository to keep on top of all the things we're working on. Important future script changes From 1.6 onwards we will be making at least the following changes: callRemote callbacks currently set the error code to nil when there is no error. In 1.6, to be consistent with fetchRemote, the error code reported will be 0. See GitHub #294. Since July 2016 if you provide an invalid string like "randomstring" when a function expects a number, the string will be treated as 0 and raise a script warning. In 1.6 this will be an error. You will still be able to provide strings containing numbers (e.g. "100" and "12.34"), this change only affects invalid strings. See GitHub #1043. When providing a width and height of (0, 0) to createBrowser or guiCreateBrowser you will encounter a script error instead of a warning. The warning was introduced Feb 2019. See GitHub #1069. Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error. See GitHub #1070. Since Aug 2015, we replaced the custom mtalocal:// URL scheme with http://mta/resourceName/blah.html. This mtalocal:// URL scheme will now be removed. See GitHub #1071. This list is inconclusive and we may introduce more changes later. What's next? Multi Theft Auto depends on community input and contributions. To keep a project like MTA going we need LOTS of people. You can help in the following areas: Designing We are looking for a web designer to help us create a new website. Testing and bug reporting Whenever you encounter a bug or recognise a need for improvement, we can't fix it until you tell us your problem! We're continually working on new features and fixes for MTA, and this always needs testing. Join our Nightly release stream (Settings -> Advanced -> Update build type) and make sure you keep in touch with on Discord and report issues on GitHub. Programming If you know C++ you may be interested in helping improve Multi Theft Auto's client. Working on open-source software may seem scary, but the best way is to try! Read GitHub's open source guide, and then find an itch to scratch, or scratch your own! Documentation Documentation is important, but also time consuming. If you enjoy writing and have some knowledge of English, or you would like to translate the English version to your native language, you’re very welcome to do so. Just head over to our wiki, create an account, and start editing! Support Do you like people? Can you give calm and thought-out responses to users needing help? Then you can spend some time providing support to those who need it. Many answers can be found on our wiki, so make sure to take some time to read it. Then, either join our chat or forums (linked below), or simply help us sort out issues and answer questions on the GitHub repository. Translation Want to translate MTA to your own language? Awesome! Visit us on Pootle. As soon as your translation is approved, it will be pushed to our repository for use in future releases. Donations Keeping the MTA downloads, master server and websites alive costs money! If you want to help us sustain our financial expenses, please donate! Thank you! Thank you to the following community members for their donations this year: Arran, [RUS] Artem Smirnov, Atti, (SAUR)Castillo, CEKfile, .:CiBeR:., Dmi7ry, HACKER99, Malone, Nero, Nicolae Vlad, pentaflops, Platin, -ffs-Sniper, Tapleto-Hos Thank you very much to the following community members for their work towards this release: Addlibs, Arran, CrosRoad95, Dezash, Dutchman101, FileEx, forkerer, Haxardous, lex128, lopezloo, LopSided, Neproify, nonamenoname, ricksterhd123, samr46, StrixG, tederis, TheNormalnij, xerox8521, xLuxy and many others who contributed to our wiki and helped out with issues. (If your name is missing or you want to change your entry above, please let us know on Discord!) You could be on this list! We're always on the lookout for new contributors. Contribute on GitHub, and chat with us on Discord. We have channels for scripting, general support (bugs), mod development, and many more! Finally, please give a ? to our newest contributor @myonlake and our newest addition to the MTA team @botder! Hope you've had a great summer! — MTA Team
    39 points
  6. Multi Theft Auto: San Andreas 1.5.8 is released Happy autumn! We've been working hard and today we're proud to announce the release of MTA:SA 1.5.8. You will receive an automatic update soon, but if you don't have MTA installed, you can get it from the home page. Statistics This is the 25th 1.x.x release 407 days 1 deprecation 5 announced backwards incompatible changes 41 new functions 68+ bug fixes and changes 465 commits (see comparison) 197 new open GitHub issues (see list) 102 resolved GitHub issues (see list) 108 closed GitHub issues (see list) 45 new open GitHub pull requests (see list) 194 merged GitHub pull requests (see list) 36 closed GitHub pull requests (see list) 39 contributors of which 27 are new (see list) 98+ total contributors (see list) 4 vendor updates Download This release is (mostly) backwards compatible with the older 1.5.x releases (1.5.7, 1.5.6, all the way to 1.5). If you're a server owner, please take note of the Changes in 1.5.8 wiki page, more specifically the Backwards Incompatible Changes. You may need to update your scripts for 1.5.8. Servers: binaries are available. Do not forget to update your default resources. Twitch We now have a Twitch channel and @Woovie has been streaming almost daily the past week. We won't be streaming every day going forward, but do expect it pretty often! AMX (SAMP) amx is a software package that allows the execution of unmodified San Andreas: Multiplayer 0.3.7 gamemodes, filterscripts and plugins on Multi Theft Auto: San Andreas 1.5.8 and higher servers. It is open source, and a prebuilt binary for Windows is available for testing purposes right now. Check out our GitHub repo for more information on how to use your SAMP scripts in MTA! 1.5.8 Highlights This release includes many additions, improvements, and fixes: Add dxDrawPrimitive3D and dxDrawMaterialPrimitive3D (#760 by CrosRoad95) Add functions to modify dynamic objects' behaviour (#784 by forkerer) Add dynamic ped ID allocating using engineRequestModel and engineFreeModel (#349 by lopezloo + Neproify + Arran + qaisjp) Add functions to manipulate colshapes parameters (#1215 by StrixG) Add element data subscription functionality (#1055 by tederis) Add engineGetModelTextures function (#1058 by Lpsd) Trailer sync fix (#1247 by tederis) Added wheel scaling functions (#1641, #1644, and #1648 by AlexTMjugador) Read the 1.5.8 release notes for a complete set of changes and more information about the improvements listed below. Watch or star our GitHub repository to keep on top of all the things we're working on. Below is a very small subset of what we've improved: Important future script changes From 1.6 onwards we will be making at least the following changes: callRemote callbacks currently set the error code to nil when there is no error. In 1.6, to be consistent with fetchRemote, the error code reported will be 0. See GitHub #294. Since July 2016 if you provide an invalid string like "randomstring" when a function expects a number, the string will be treated as 0 and raise a script warning. In 1.6 this will be an error. You will still be able to provide strings containing numbers (e.g. "100" and "12.34"), this change only affects invalid strings. See GitHub #1043. When providing a width and height of (0, 0) to createBrowser or guiCreateBrowser you will encounter a script error instead of a warning. The warning was introduced Feb 2019. See GitHub #1069. Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error. See GitHub #1070. Since Aug 2015, we replaced the custom mtalocal:// URL scheme with http://mta/resourceName/blah.html. This mtalocal:// URL scheme will now be removed. See GitHub #1071. This list is inconclusive and we may introduce more changes later. What's next? Multi Theft Auto depends on community input and contributions. To keep a project like MTA going we need LOTS of people. You can help in the following areas: Testing and bug reporting Whenever you encounter a bug or recognise a need for improvement, we can't fix it until you tell us your problem! We're continually working on new features and fixes for MTA, and this always needs testing. Join our Nightly release stream and make sure you keep in touch with on Discord and report issues on GitHub. Programming If you know C++ you may be interested in helping improve Multi Theft Auto's client. Working on open-source software may seem scary, but the best way is to try! Read GitHub's open source guide, and then find an itch to scratch, or scratch your own! Documentation Documentation is important, but also time consuming. If you enjoy writing and have some knowledge of English, or you would like to translate the English version to your native language, you’re very welcome to do so. Just head over to our wiki, create an account, and start editing! Support Do you like people? Can you give calm and thought-out responses to users needing help? Then you can spend some time providing support to those who need it. Many answers can be found on our wiki, so make sure to take some time to read it. Then, either join our chat or forums (linked below), or simply help us sort out issues and answer questions on the GitHub repository. Translation Want to translate MTA to your own language? Awesome! Visit us on Pootle. As soon as your translation is approved, it will be pushed to our repository for use in future releases. Donations Keeping the MTA downloads, master server and websites alive costs money! If you want to help us sustain our financial expenses, please donate! Thank you! Thank you to the following community members for their donations this year: Arran, Belle_Delphine_Nudes, Born2Tech, CanadienFr, (SAUR)Castillo, Dmi7ry, FlackoAR, IIYAMA, (SAEG)Malone , Platin, Riantx, SalahHasoneh, [CIT]Stealth|GIGN, Tapleto Host, TioPerchitas, -ffs-Sniper, TITAN RPG, Viude, XaskeL Thank you very much to the following community members for their work towards this release: 0x416c69, Addlibs, AGraber, AlexTMjugador, ApeLsiN4eG, buepas, colistro123, Disinterpreter, ecastro98, knitz12, MegadreamsBE, pentaflops, PerikiyoXD, theSarrum, Simi23, tederis, TheNormalnij, Zangomangu, and many others who contributed to our wiki and helped out with issues. (If your name is missing or you want to change your entry above, please let us know on Discord!) You could be on this list! We're always on the lookout for new contributors. Contribute on GitHub, and chat with us on Discord. We have channels for scripting, general support (bugs), mod development, and many more! And one more thank you to every member of the MTA staff who helps support this forum and Discord. Without you donating your time, this project would not be nearly as successful as it is now. Finally, please give a to our newest contributors @Lpsdand @Strix and our newest addition to the MTA team @Saml1er! Have a good autumn! — MTA Team
    38 points
  7. Happy Spring Break! We have got a new release for you - Multi Theft Auto: San Andreas 1.5.4! This release includes security updates for the server that protect both you and us, so we recommend all server owners to upgrade as soon as possible - see the steps below for tips on that. Failure to do so may affect your server's visibility on the Master Server List in the ingame server browser. Aside from security fixes, there are some feature updates in this version for the client as well, so regular players are more than welcome to update. What do you need to do to upgrade your server properly Stop your server, then upgrade your server binaries like usual. You can also upgrade your server resources if you use any of the default MTA:SA ones. Start your server, and when it is running, stop your server again (This will step will ensure mtaserver.conf is upgraded) Edit your mtaserver.conf file, and find <owner_email_address> (it should be just below the <servername> parameter) and insert a valid e-mail address that we can use to contact you, should there be an issue with your server. This e-mail address IS NOT visible publicly and will only be used for means listed earlier. That is, only if those occur. Save the mtaserver.conf file, then start your server again. Release Highlights Authorized Serial Account Protection is now enabled by default. To put it simply, this feature prevents players from logging in to an account on the server if their serial differs from the serial associated with that account. Naturally, this feature is configurable so you can restrict it to specific account groups and you can authorize more than just one serial for a specific account. You can also disable this in the mtaserver.conf file if you are sure you do not need the feature. Database Credentials Protection is now enabled by default. passwordHash() & passwordVerify() can now be used to store and verify passwords securely and efficiently fetchRemote() now supports parallel downloads with the queue name parameter setWorldSpecialPropertyEnabled() now has settings for "sniper moon", "random foliage" and "extra air resistance" New scripting functions: get/setVehicleLODDistance() setElementDimension() now supports element omnipresence, which means that an element can be in all dimensions at once fixes for weapons/fists desync Corona markers should now have a correct attach offset position SQLite or MySQL no longer makes the server freeze if the connection is lost (#9520) Goggles no longer stay after player was killed (#9477) updates for CEF and other dependencies and redists fakelag command for testing sync issues fixes for some crashes and improvements for error handling for installation and startup issues removed max password length limit for server account passwords added server option to allow locally modified (gta3.img) vehicles added world special property "extraairresitance" to remove speed limiter on certain road sections (#7546) resource pack: various changes in acpanel, editor, freeroam, killmessages, playerblips, race and webbrowser ... plus more! A complete list of changes can be found here (recommended read) and here (incomplete, from r10623 upwards). List of changes to the resource pack can be found here (starting from and including Oct 29, 2016 upwards). Want to download MTA:SA 1.5.4? Click here to download the build for Win 7+. Looking for a legacy build for XP/Vista? You can download it here. Or you can click here to go to our home page. Once there, click the Download button at the top center of the page, then choose your build and you are set. Linux server packages are also available. This release is backwards compatible with the 1.5.3 (also 1.5.2, 1.5.1 and 1.5). If you use these versions, then you may as well upgrade to the newest one. Credits for this release: 4O4, Arran, Dutchman101, einheit-101, Fernando, lopezloo, Necktrox, next, Noki_, qaisjp, ZReC ^ (Have you contributed to MTA:SA 1.5.4's source code/resources pack but were not mentioned in the above list? PM @jhxp with a link to your contribution and you will be added ASAP) ^ Oh, and did you know that we have got our very own Discord server now? Click here for details on how to join our server. Take care. -- MTA Team
    38 points
  8. Hello everyone! The holiday season is well under way, so there is one thing left to do before we say goodbye to the year - and that is to check out our "A Year in Recap" post! Like the last time, we have prepared a brief summary of the year for you. We have gathered recollections of some of the most important news and events that happened in 2022 from an MTA fan's perspective. We have also included a couple more things that might be interesting to you, so be sure to read the full post! 2022 in Recap This was a more quiet year for us, but otherwise a lot has happened in the GTA community: In early February, Rockstar Games have confirmed on their Newswire, that the next game in the GTA series is in development, although without disclosing any other details. The last game in the series - Grand Theft Auto V - was first released in 2013, so it has been quite a wait since then. In April, we have published first server builds for the ARM architecture. Botder has worked hard on this feature, which allows you to run the MTA:SA server on your Raspberry Pi-s or other similar devices without too much hassle. These builds come in many flavours (ARMv7 arm32 & ARMv8 arm64; Windows & Linux) and should work just fine. Your mileage may vary though, as they are still considered to be experimental. If you want to give them a shot, you can find them on the nightly page or the Linux page. Be sure to report any problems you run into - either on our GitHub or Discord. Staying on the server topic, we have released a small security update for the MTA:SA server in May. This update fixed a vulnerability, that could be exploited to crash the server process. Also in May, a sad news has come, as Ray Liotta, the actor who voiced Tommy Vercetti (the iconic protagonist of GTA: Vice City, who is also present on the MTA:SA's logo and icon) has passed away. He has also starred in several movies, such as an Oscar-winner and all-time classic "Goodfellas", which served as one of the inspirations for Vice City and other GTA titles. Rest in peace, Ray. In, what some have described as the biggest leak in the history of gaming, a bunch of never seen before footage from the next GTA game have been leaked online in September. The videos have confirmed some of the speculations that fans and game journalists had in regards of the game - eg. its possible setting; but also shown some new details - eg. a pair of new protagonists or possible features. Thourough the year, we have been also working on improving our infrastructure and Discord server with various tweaks here and there. While you may not notice these changes at first, they help us provide you the best MTA experience. A bunch of interesting MTA:SA-related YouTube videos from this year Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 34,295 players 2022.12.23 (at 18.43 GMT) Highest recorded number of concurrent unique players 52,098 players 2020.04.02 (at 18.00 GMT) Recent number of daily unique players 135,876 players 2022.12.18 (Sunday) Highest recorded number of daily unique players 185,818 players 2018.02.03 (Saturday) Recent number of monthly unique players 584,532 players November, 2022 Highest recorded number of monthly unique players 805,903 players January, 2018 MTA:SA version or series Percentage of players using that version or series as of 24th of December, 2022 1.5.9 99.1% 1.5.8 0.2% 1.5.7 0.4% 1.5.6 (and older) 0.2% 1.4.x + 1.3.x 0.1% The numbers are slightly smaller than in the last year, but we are still good on that front. As of 25th of December, 2022: 58,440 members have joined our Discord server - went up from the ~40.000 in the last year we have got 13,748 followers on Twitter and 59k followers on Facebook and our Steam Community group has 29,345 members Status update And here is the part that we omitted last year, but we actually have things to say this time! A while has passed since the last MTA:SA release. Patrik & other developers did some work towards the next one, but it still needs some fine-tuning. We are also still looking for the best way to approach it, as we would like this release to be the first one in the 1.6 series and we expect some compatibility-breaking changes to be included in it. We will let you know once we have it sorted. Continuing on the development side of things, one of our community members, Merlin, has been working on cleaning up and refactoring some of the Project's source code. Thank you - clean code is important, so we really appreciate your contributions on that front! Community-wise, it has been a good time for our players. Our AC team led by Dutchman101 have been cracking down on paid cheats. Thanks to their efforts in the recent months, the cheating problem should be now less noticeable than ever. Last, but not least - we will be celebrating Multi Theft Auto's 20th Anniversary next year. Yes, you have read it correctly - we have been running the MTA project for two decades now. Many staff and community members have come and gone since then. Some of them still follow the Project, some no longer do. We have made so many releases during that time, and there are also so many memories and stories that go along with them. Stay tuned for more details about the Anniversary! And for just 20 Claudecoins, you can get yourself an early access to the... nah, we are still keeping it free Happy holidays and we wish you all the best in 2023! -- MTA Team Credits for the content submissions: Dutchman101, Nebla, patrik, -ffs-PLASMA, srslyyyy.
    36 points
  9. Default MTA Server || Freeroam [P] EN The classic freeroam experience with unlimited chaos, drifting, shooting other players (or just using /peace for passive mode), hydra dogfighting and fun arena's. As a classic freeroam there are no restrictions to spawning in vehicles & weapons, and freedom applies to all other game aspects as well. Average players online is 100, so there's always someone to troll or fight! Click to join (mtasa://149.202.51.189:22005) ______ Grafuroam: Phantom (English Freeroam Server) EN (Dogfight, Pursuit, Race, Team Deathmatch, Tank Deathmatch, Survival, Duel, War, Derby, Vehicle Deathmatch) A freeroam server with many great features created to provide fun to the players. Click to join (mtasa://109.230.215.29:22003) ______ Prime Freeroam EN (Freeroam, NPC, AI) Click to join (mtasa://149.28.237.162:22003) ______ Welcome To San Andreas (Single Player Features!) EN (Freeroam, NPC, AI) The old-school single player San Andreas experience! Click to join (mtasa://wtsa.sparrow.moe:22003) SAES:RPG EN SAES:RPG is a gaming community and server which has ran on MTA since 2003 on both MTA:VC and MTA:SA, Our current server is an RPG based gamemode in which you can be Cops, Robbers, Gangs, Dealers, Medics, Mechanics and participate in Roleplay, Bank Robberies, Store Robberies, Racing, Hunting down criminals, Monthly giveaway events and much much more! Click to join (mtasa://51.38.67.64:4999) ______ CIT Cops 'n' Robbers, Gang Wars, Civilians | cit.gg EN/PT/AR/TR (CnR, Turf wars, Civilian jobs.) A community mainly focused on cops 'n' robbers, gang turf wars and a variety of civilian jobs, community made events, joining groups to play and have fun together. Click to join (mtasa://94.23.158.180:22003) ______ SAUR Utopia RPG EN An RPG server with multiple unique features and activities, with an active staff team. Click to join (mtasa://phoenix.saur.co:22003) FFS Gaming DM/Race/DD/Hunter/Shooter/Stuntage/Trials/HP/RUN/CW/PTP/CarBall/Training/Minigames EN FFS Gaming provides a vast amount of race type gamemodes all in one server. From regular races to be the fastest one, kicking your opponents into water in destruction derby or simply having a fun time in minigames, we provide everything to enjoy your stay. Click to join (mtasa://54.37.245.209:22003) ______ MX Gaming EN (Destruction Derby / Fun Destruction Derby / Shooter) A gaming community with a variety of gamemodes and servers. Join DD (mtasa://server.mx-palace.com:22003) Join FDD (mtasa://server.mx-palace.com:22007) Join Shooter (mtasa://server.mx-palace.com:22006) Need For Speed: San Andreas Global/EN/PL/RU/ES/PT/TR/CZ/FR/DE/HU/ID (Race/Freeroam/Other) Racing server inspired by various nostalgic Need for Speed titles such as Underground 1/2, Most Wanted, Carbon, World where you start out with a slow car and progress by racing, participating in AI police pursuits and numerous other activities, all of which let you buy new cars and and upgrade their performance and visuals with hundreds of unique custom made body parts and complete customization of paintjobs through a NFS Carbon-like vinyl editor. Click to join (mtasa://178.33.54.30:20256) ______ Mr. Green Gaming EN/PT/AR/TR/RU/PL/DE/FR (Race, DM, CTF, Shooter, MIX) The classic racing experience! Join Race (mtasa://race.mrgreengaming.com:22003) Join Mix (mtasa://racemix.mrgreengaming.com:22003) ______ Sofa King Cool EN/Global Click to join (mtasa://87.98.182.70:22005) Epic-Row Zombie RPG EN (Zombie, RPG) PvE based zombie gamemode with RPG elements. Click to join (mtasa://s.epicrow.com:22003) StoneAge [Rust] EN/PT (Survival, Rust) StoneAge is a survival server, having the game Rust (Facepunch Studios) as its biggest inspiration. On this server players must search for items and resources, build bases, destroy enemy bases, explore islands, radioactive zones, fight against animals and survive their biggest threat: the other players. Click to join (mtasa://158.69.122.226:22003) ______ San Andreas Police Department: First Response EN (Emergency Services Simulation / RPG / AI) Step into the life of a Police Officer, Paramedic or Firefighter and react to a wide variety of callouts all over San Andreas. Click to join (mtasa://37.187.250.129:22004) ______ SAAW World War II EN (Team deathmatch / War (Conquest) / Airstrike / Sea war / Tank war) A team-based tactical world war II server featuring third person and first person gameplay and dozens of different vehicles, weapons, classes and maps. Main objective in every map is to bring the enemy ticket count to zero by capturing points, shooting enemies or sinking convoy ships. Click to join (mtasa://116.203.196.16:22003)
    32 points
  10. 1.6 has now been released! Original post: Multi Theft Auto: San Andreas 1.6 is ready for testing! Our next major build is coming along nicely, so we are keen to let you guys into the action ASAP. Main highlights Two of the main exclusive highlights of this release is the script support for custom IMG containers, and ability to set model flags. Big thanks to @TheNormalnij for his efforts on making these happen! There are also numerous other changes such as updated translations and main menu texts, new GTA skins, improved sync, improved GTA camera screenshot quality and many other bug fixes and improvements which you can find on our Wiki page. By having you join us to test 1.6 we can make sure we catch any new bugs and fix them before the full release. Backwards compatibility 1.6 is not compatible with the older MTA:SA versions (including the most recent release - MTA:SA 1.5.9). This means that you need to connect to a 1.6 server if you wish to test the 1.6 client. There were a bunch of technical reasons for this incompatibility and they were all necessary for us to continue improving the mod. Currently 1.6 includes 12 backwards incompatible changes which you should be aware of. There may be more incompatible changes to be added during this testing phase. Please check out our preliminary release notes on our Wiki page. Public test servers We are hosting a number of official 1.6 public test servers during the 1.6 testing phase for you to try out. Welcome! After the testing phase is over, our public test servers will be shut down. Full release schedule We are planning a full release of 1.6 around May–June if testing phase goes well. To guarantee a smooth transition for your server, we recommend that you try out and upgrade your scripts on this new testing version before the full release. There will be a new announcement once 1.6 is fully released. Keeping your 1.6 up-to-date Once you've installed 1.6, MTA will automatically prompt you to update to a newer version whenever there is an update available, including once we release 1.6 in full - so no need to download and reinstall 1.6 again. What happens to 1.5? 1.5 installations will be kept intact even after the 1.6 release, to let players and server owners switch over to the new version whenever they feel they are ready. However, new features and changes will only be available on 1.6. Note, that you can have both 1.5 and 1.6 installed at the same time on your computer to allow you to switch between if you want. MTA will prompt you to switch to the correct version if the server doesn't support your current version. CLICK HERE TO DOWNLOAD MTA:SA 1.6 BETA If you spot a bug in MTA, please report it here, or if you spot a bug in of our default resources, please report it here instead. See you in game! --MTA Team
    31 points
  11. Hello, All global bans have been removed, everyone is unbanned * Legend: "global ban" = Manual ban for bad activity or AntiCheat "Banned by MTA" MTA wishes everyone a happy new year. To show our good intentions and willingness to forgive those in which we previously lost faith, everyone that received a global ban in the past 15 years has been given a final chance to be a normal player, and redeem themselves. This is not a joke, we removed all bans (except for a handful of the worst cases, up to 20 users), and will only happen once in MTA's lifetime. Everyone that used paid hacks, or was a cheat developer, can play again. We are extra confident in this because we recently patched (detected, blocked) the major paid hacks on MTA, unbanning paid hack users in this scenario was our traditional approach which we however shifted away from. Everyone that did basic malicious activity against MTA, its users or a server, can play again. Of course, except for the absolute worst of cases, which is unlikely to include you. So for a bit of context, besides giving everyone a chance to redeem themselves (if they had previously insisted they realized their mistakes and wouldn't repeat.. but got rejected as we have different experiences with such users), we realized that the system used was prone to false positive bans that accumulate during periods of lowered AC Team manpower. Even when manpower went up, it was a huge leap to catch up with the growing so-called technical debt to fix up on false positives, leading to, as I must admit, a bunch of unfairly banned people with appeals that wouldn't be attended to. This is the compassionate move. - Those that know what they did to get banned, should know that this is their final chance, and that should you draw AC team's attention again you are done for. You are certainly one of those that fully realize the strength of our anti-ban evade measures to which point you can't do anything to evade bans, as when you get such a manual ban not even spoofers will work to evade.. so, don't make the same mistake again, don't put yourself in the same situation of being defeated, AC team will really come after you if you repeat. You can consider the ban amnesty as a peace offering, as long you are willing to be a normal user from now on. Not a toxic cheat developer, hacker, DDoS attacker or so on, whatever behavior got you banned. Redeem yourself, learn from your past mistakes, and make a fresh start. - Those that know they are innocent and were caught in the crossfire of their appeals not being handled in a timely manner or at all, we extend our deepest apologies to you, and reassure you that 99% of all measures (intended for other banned users) which could lead to such a false positive ban are now removed along with the Ban Amnesty. You are cleared and very much welcome back to play MTA: San Andreas. I am well aware how many dreams of past players were ruined by unfortunate mistakes. Disclaimer: Anyone that notices they are still banned after today, is one of the up to 20 people in the list of exceptions, and shouldn't bother to appeal. It has been double checked that only intended remaining bans still exist, there is no such thing as a 'mistake' to be reconsidered. Community bans (Discord/Forums) are also not included other than on a case by case basis such as through the use of our Discord Ban Appeals board, unless otherwise stated in the near future. At last, if you have any friends that are permanently banned, please inform them about the good news, but caution them to behave this time, because like I wrote at the top, this is an extremely rare event that won't occur in MTA's future, as it has never done so in the past 15 years.
    31 points
  12. Hi there! Time sure flies fast, doesn't it? It has been a while since the last post from us so we would like to give you an update on what has been going on recently with MTA:SA. We have got two highlights for you this time. The community Do you remember our Community website? It has served us well over the years but has also caught some rust in the process. Therefore, we would like to re-visit it and improve your experience with discovering and publishing resources. Our plan is to build a new community website from the ground up using modern technologies, and we would like to hear from you what you would like to see on the new platform. Please respond to this thread with your ideas and suggestions. Technically inclined users can take a look at the first pass of our specification document. Development progress As for the mod itself, we have received many pull requests (patch contributions) on our GitHub from open source contributors lately. One of such contributions is a brand new feature: custom IFP animations support, coming from one of our community members, Saml1er. He managed to get this to work nicely in MTA:SA, while ensuring that our coding standards are met so we could include it without too much hassle. Saml1er even made a video which showcases what this feature is all about. You can find it below: We intend this to be a part of our upcoming 1.5.6 release which we hope will come soon, but you can try it out now by using a nightly build: https://nightly.multitheftauto.com/ Tips for using this can be found on our wiki: https://wiki.multitheftauto.com/wiki/EngineLoadIFP That's all for now. Take care and enjoy the summer! — MTA Team
    29 points
  13. A while ago we had published a release candidate build for the upcoming release for you folks to test. This phase went fine, so we feel that we are now ready to present you with the new stable version of the mod - Multi Theft Auto: San Andreas 1.5.3! Just like before, this is an update for our current stable version series - MTA:SA 1.5. Contrary to this definition, it is rather a huge update which contains mostly smaller changes, but makes up for it with the amount of them. A lot of effort was put by @Jusonex and @sbx320 into cleaning the code and reorganizing the build system, both of which should make it easier for us to maintain MTA:SA's code base and simplify the compilation procedure. However, during the above mentioned RC testing phase we decided to revert some of the code clean-up changes and leave them for a future release due to problems they were causing. We feel it will be better that way as some of these changes simply need more work as they affect a lot of the code base, making it harder to pinpoint other issues that might be discovered. In the meantime, @ccw and @darkdreamingdan had worked on fixing bugs reported by the community. We also had updated several dependencies (third-party components which are used in our mod), including a bunch of utility libraries (such as sqlite, zlib, libpng or libjpeg) and the CEF (Chromium Embedded Framework) components. The latter especially is an important change which we had explained further in a separate post and also summarized briefly below. This update will be slightly troublesome for some of our players who are still using Windows XP and Windows Vista (which is, to be honest, a rather small amount). Regular 1.5.3 build will not work for such users, so we had prepared a legacy build just for them. Furthermore, such users need to be prepared that at some point we might drop support for Windows XP and Windows Vista for our future releases. Please read this post to learn more about this change and its consequences. Since the build system was reorganized, a lot of smaller changes which were originally made for 1.6 were also introduced in this version (as long as they were not breaking the compatibility), making it actually one of the biggest releases we have ever made (and also sort of a bridge between 1.5 series and the then-upcoming 1.6 release). You can check the list below for some of the most interesting changes, but we really recommend checking full lists of changes to check whether the feature or function you have always wanted is already available in this release: Added support for German Steam version of GTA:SA (thanks to Lakota, Mario and @Sh4dowReturns for feedback) Improved streaming of low LOD objects and increased limits Multiple popular crashes were fixed Code cleanups and improved internal error logging MTA:SA will now try to use the native screen resolution when first launched Fixed desktop resolution when minimizing with fullscreen borderless window mode Added client resource files path info to Advanced tab in Options window Added icon for Windows server executable and digitally signed the CEFLauncher executable New scripting functions: canBrowserNavigateBack(), canBrowserNavigateForward(), navigateBrowserBack(), navigateBrowserForward() and reloadBrowserPage() (developed by mabako); createTrayNotification() and isTrayNotificationEnabled() (developed by Necktrox); also resizeBrowser(), fileGetPath(), setVehicleWindowOpen() and more... Tweaks to dbQuery()/dbExec(), fileRead(), addDebugHook() and more... Fixed setBrowserAudio() not muting the sound correctly on some websites e.g. YouTube Fixed setCameraTarget() calculation (thanks to lex128) setVehiclePlateText() now works with any kind of vehicle, including motorbikes (thanks to lopezloo) Added blend parameter for setPedAnimation() (thanks to lex128) Added support for objects and weapons in ped damage events (thanks to lopezloo) Water elements are now limited to a specific dimension Fixed sniper scope disappearing after killing a ped (thanks to lopezloo) Fixed MTA sometimes not loading custom textures Fixed MTA slowly updating position of attached elements Security and performance tweaks for CEF Fixed CEF popups (e.g. <select> boxes) not being rendered correctly Added option to block server admins who login with an unrecognized serial Added duplicate log line filter for script debugging Fixed a connecting player being able to block resources from starting Tweaked logic of client resource file validation Added server logging for redirectPlayer Tweaks for admin, missiontimer, race, runcode and webbrowser resources (thanks to Dutchman101, Einheit-101 and PhrozenByte) Added map backups for Map Editor and changed its default fps limiter setting value from 36 to 50 (thanks to AleksCore for the latter) Removed the no longer needed VS2008 redist package from the installer ...and much more! A complete list of changes can be found here (recommended read) and here (incomplete, from r7816 upwards). List of changes to the resource pack can be found here (starting from and including Feb 18, 2016 upwards). Please be advised that UltraThing and older versions of ENB series mods are blocked in MTA:SA 1.5.3 due to their incompatibility with the MTA:SA web browser components. If you want to use ENB mod in 1.5.3, please update it to a newer version if your current one does not work. If, on the other hand, you want to use UltraThing mod in 1.5.3, you will not be able to do it anymore - sorry for that just like above - please update it to a newer version (v0.29 or above). Want to download MTA:SA 1.5.3? Click here to download the build for Win 7+. Looking for a legacy build for XP/Vista? You can download it here. Or you can click here to go to our home page. Once there, click the Download button at the top center of the page, then choose your build and you are set. Linux server packages are also available. This version is backwards compatible with our older 1.5 releases, but we still encourage everyone to update their clients and servers ASAP to ensure, that they benefit from bugfixes, security updates for CEF, performance tweaks or other improvements. We would like to thank the following community members for their contributions to the MTA:SA source code, resources or feedback for this release: Aboshanab, AleksCore, braydondavis, Dutchman101, Einheit-101, Lakota, lex128, lopezloo, mabako, Mario, Necktrox, PhrozenByte, qaisjp, rafalh, @Sh4dowReturns, zneext (Have you contributed to MTA:SA 1.5.3's or 1.6's source code/resources pack but were not mentioned in the above list? PM @jhxp with a link to your contribution and you will be added) We hope that you will enjoy this release. Also, please keep in mind that if you encounter a bug or a problem which was not present in previous versions, you can report it to our bugtracker. --MTA Team
    29 points
  14. Hi people! Same drill as usual. The year is nearing to an end, so here is a freshly baked summary post for you. Read on and learn about all the interesting things that happened in the MTA community in 2021. 2021 in Recap Early this year, we have restructured our Moderation team a bit by adding the Specializations divisions (such as: Management, Tech and Infrastructure, Social Media). The aim of this was to refine extra talents of our Moderators and put them to a better use. As one of the results of that, the Management division has introduced a new way for more-involved-but-not-quite-there-yet MTA supporters to contribute - a Helper role. Curious about what it is? Check out the post by Tut. At the end of July, our developer and designer, Patrik, has revived the live streaming idea a bit and played some MTA:SA on our Twitch channel. He focused on visiting various servers ran by the community. In case you have missed it, you can check the stream capture here: https://www.youtube.com/watch?v=n2KcspT0F0A There were a few recurring requests that you guys have kept asking us about over the years. One of them was to release the mobile version of MTA:SA - apologies, but unfortunately that is still not going to happen ?. But another request was to make it possible to buy some official MTA merchandise. And guess what - we have listened to you on that one! Patrik has prepared some neat designs and we have put them for sale - although please keep in mind, we do not make any profits of these sales. Want to see the goods? Check them out here: https://multitheftauto.myspreadshop.net/all Not that long ago, in early October, we have released Multi Theft Auto: San Andreas 1.5.9. This release was focused on wrapping up the contributions made to the mod so far and put them in a single package for your convenience. Same month, Rockstar Games has announced an upcoming release of "Grand Theft Auto: The Trilogy - The Definitive Edition", a remake/remaster of the original 3D era GTA trilogy (GTA3, GTA:VC and GTA:SA). Not only was it a sudden announcement, but also the release was coming really soon. The remastered games were released, but received mixed reactions from gamers and reviewers. Technical-wise, they are a feat, as games were remade in a different and well-established game engine and are available for multiple platforms. Sadly, the same could not be said about the actual quality of these games as it was inconsistent. Hopefully, the improvements planned by Rockstar will bring them up to the quality they deserve. It is important to note that MTA mods (GTA3:MTA, MTA:VC and MTA:SA) do not work with the remastered games from the GTA: The Trilogy. We currently have no plans of making them compatible, as it would require an insane amount of effort, considering the technical differences between the original games and their remastered equivalents. Lately, our Development and Infrastructure divisions have been working on improving the reliability and performance of our web services. You may have noticed that for instance, our forums have been running faster - it is all a result of CiBeR's hard work. One of our distinguished community members, Haxardous, has prepared a list of interesting MTA:SA servers. If you are looking for a new MTA:SA server to play on, then you might want to check out one of his recommendations. You can find them here. ModDB has recently featured all of the mods that won the "Mod of the Year" award in the last 20 years. We had won this award ten years ago, so naturally we are on the list too! A bunch of interesting MTA:SA-related YouTube videos from this year [DM] NikotiN ft. Lost ft. Driver ft. SKooD - Enormous Cataclysm - video by CHRS / map by Nikotin, Lost, Driver and SKooD MTA-SA: Welcome to San Andreas Trailer (WTSA) #1 by ヌルぽ / Nurupo #MTA:SA: ~ TACTICS / STEALTH by notzz & the_bestteam Grafuroam drift handling update by Unity SHORT ONE | NON-STOP MTA DAYZ by BuczU YouTube in Car - Interactive Dashboard (MTA:SA) by Chemical Creations MTASA Dangerous Experiments by Toliak Purple Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 37 487 players 2021.12.19 (at 19.13 GMT) Highest recorded number of concurrent unique players 52 098 players 2020.04.02 (at 18.00 GMT) Recent number of daily unique players 148 783 players 2021.12.19 (Sunday) Highest recorded number of daily unique players 185 818 players 2018.02.03 (Saturday) Recent number of monthly unique players 626 613 players November, 2021 Highest recorded number of monthly unique players 805 903 players January, 2018 MTA:SA version or series Percentage of players using that version or series as of 25th of December, 2021 1.6.0 (alpha; custom) 0.2% 1.5.9 97.6% 1.5.8 1.9% 1.5.7 (and older) 0.2% 1.4.x + 1.3.x 0.1% Still looking good. On a side note, our community on Discord keeps growing. We went from 20k users last year to nearly 40k this year. Our presence on social media (Twitter, YouTube, Twitch, Facebook and Reddit) is improving too - thanks to work done by Patrik and the Social Media division. --- Enjoy the holidays and hope to see you back in the next year! -- MTA Team
    28 points
  15. Hello. 2019 is nearing to an end, so here is our traditional "A year in Recap" post for you. Below you can find the summary of what has happened this year - along with the current status of an entry (where applicable) and other things that might be interesting to you. ? 2019 in Recap Late January, we have refreshed our Forum Rules - we gave them a new look and rephrased a bunch of paragraphs to make them more clear and easier to follow. In May, we have decided to drop support for Windows XP and Vista in our future releases. These operating systems are no longer supported by Microsoft and only a handful of our players still use them. We have advised our players to upgrade their PCs to newer Windows versions. While Windows 7 support will be soon ended by Microsoft as well, we still intend to support it in MTA:SA for a while. In July, we have opened an User Guides section on our forums, which aims to provide our users with quality guides and tutorials for various MTA-related topics. We are still looking into improving this concept. On 31st of August, we have released Multi Theft Auto: San Andreas 1.5.7. This release was focused on performance improvements, minor scripting additions and bugfixes. It is still the current release and, as mentioned above, is the last main release for Windows XP and Vista. On the same day, we have asked you guys to help us re-design our community website. The work on the new community is currently on hold however. Later in September, Rockstar Games has released GTA: San Andreas for free on their launcher app (for a limited time). We have added support for it in MTA:SA shortly after. 26th of October marked the 15th anniversary of Grand Theft Auto: San Andreas original release on PS2. While it was not the game we started with, it was the game that allowed us to make MTA the successful mod it is today. ? A bunch of interesting MTA:SA-related YouTube videos from this year MTA SA: SAPDFR Online Gameplay 171 (Flaming in the Cold) - server SAPDFR.org, video by Armor23OnPatrol [DM] NeiT ft. Gteatero ft. nX_ - Demons Skills 3 - video by GercszTV FBX replace per element feature - concept and video by CrosRoad95 [MTA SA] Let's play S.T.A.L.K.E.R. - server ex-zone.ru, video by TEDERIs MTA:SA - Legend Mercy Tactics - video by TheGam3r23 MTA:SA Hydra Stunts 2019 [SW]Supa Innovation - video by SupaHotFire ? Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 31808 players 2019.12.15 (at 17.30 GMT) Highest recorded number of concurrent unique players 34653 players 2018.02.03 (at 17.30 GMT) Recent number of daily unique players 132450 players 2019.12.21 (Saturday) Highest recorded number of daily unique players 185818 players 2018.02.03 (Saturday) Recent number of monthly unique players 531728 players November, 2019 Highest recorded number of monthly unique players 805903 players January, 2018 Player counts were lower than the ones from last year, but they're still large. Again, it's great to see that so many players are still interested in GTA:SA even though it's over 15 years old now! MTA:SA Version or series Percentage of players using that version or series as of 22nd of December, 2019 1.6.0 (old-alpha) 0.1% 1.5.7 97.80% 1.5.6 1.20% 1.5.5 (and older) 0.70% 1.4.x 0.1% 1.3.x 0.1% The latest stable version is the most popular one - and that's good. ? Status updates Not much to say at the moment. Things have slowed down a bit, but we are working towards the next release. That's it for now. Happy Holidays and best wishes to all of you in 2020! ?? -- MTA Team
    28 points
  16. Hey, I wonder what this button does... <presses the button> huh? delete all forum users? oh sna- Hi there, the MTA Team is happy to present you with the result of what we have been up to recently - the redesigned and refreshed MTA Forum! This is something that we have wanted to do for a long time, and for several reasons. The forum software we have used until now (phpBB) has served us well through the years, there is no doubt about that. However, as time went by, our needs were changing too. It was becoming less and less feasible for us to use and maintain the forums in their present state, so we decided it was time to try something that is more suited to our current needs. We were recently presented with an opportunity to switch the forum software on attractive terms and we took it. Lo and behold, here are the new forums! Highlights of new features that were not present on the previous forum: forum now runs on a proprietary, secure, well tested and widely used software solution - the IPS Community Suite a completely new, mobile-friendly forum theme a fully fledged rich text editor for posting or editing your content on the forums (instead of the previous plain text box with BBCode buttons) an improved user profile system for greater personalisation of your presence on our forums a new, customizable real-time notifications system also a new, simplified Private Messaging system improvements to the quotation system (quotes link to the original post, and are fully collapsible) and replying in general (the multiquote feature) an ability to 'like' and rate topics and posts, awarding reputation points to their authors topic authors can now assign tags to their topics, making it easier for users to find the content they are looking for several new enhancements and customization features to improve your browsing experience (eg. topic previews; the ability to hide forums you are not interested in) moderators now have an ability to promote your topic on the forum (similar to stickied topics, but separate to them) several new features for us administrators too, which will make forum maintenance easier and possibly allow us to implement new forum features without a hassle ... and more! List of features that were present in the previous forum but are missing or are less functional now: no topic icons Private Messaging system is less pleasant to scroll through. Getting used to it might take some time too it is no longer possible to view the source code of posts. If you really need that functionality, you can check the page's HTML source code directly, then use a third party converter to obtain the BBCode code boxes are no longer integrated with the MTA wiki URLs FAQ: Q: Are my posts still in place? What about my private messages? A: They are both fine. You can find them in the same place you left them before. Q: Will the old forum URLs still work? A bunch of places on the web link to your forum using old URLs... A: Yes, they will work. We have a on-the-fly converter in place for such URLs, so they will still link to where they should. Q: I have found an issue with the new forum. Can I report it? A: Sure. Send a PM to one of the forum administrators (darkdreamingdan, jhxp or Jusonex) and describe the problem you have found. Make sure you provide all the details or steps to reproduce your issue, where applicable. We would like to thank Audifire and the mta-sa.org team for donating the forum software license to us. And naturally, you can not forget about darkdreamingdan and Jusonex, our team members who had both put a tremendous amount of effort in preparing and performing the forum maintenance and migration. Awesome job, guys. Did you like the change? Please let us know in the comments! See you next time. --MTA Team
    28 points
  17. 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)
    27 points
  18. Hi guys @fastman92 has recently engaged with us in order to get his limit adjuster implemented into MTA. Obviously, there are a number of complexities involved in implementing this, and we need to make some important design decisions to achieve this. So, why do you want to use a Limit Adjuster tool? Some things I'm hoping to learn: Are you trying to play MTA with a modified version of GTASA? Do you want the limit adjuster to play mods like GTA:Underground? Are you trying to use Limit Adjusters with MTA's own Lua engine* functions? (e.g. engineLoadDFF) Anything else? Any feedback would be incredibly beneficial to the team going forward. Cheers Dan
    26 points
  19. Hello. This is my new custom window system with widgets. Just rewrited window system, including this custom GUI widgets: - Scroll Panes - Buttons (+ buttons with images) - Progress Bars (automatic checking for vertical or horizontal using its size, square is horizontal) - Scroll Bars (same as progress bars) - Custom Themed Edit Boxes, Memo Boxes, new widget - Number Boxes (support mouse scrolling) - Check Boxes - Combo Boxes - Tab Panel with tabs - Labels - Dialog Boxes - Tooltips - Loading Circles - Table Views (Grid Lists) Here I've just used only OOP coding style, just copy this one lua file in your projects, and start this resource automatically, because this file getting directories from main resourcename, and using files without copying. Screenshots Video: Example - Login Panel. Author - Estet (DK). Tutorial of installation: Download (GitHub) Wiki Documentation Thank you.
    25 points
  20. Multi Theft Auto: San Andreas 1.6 is released! Hi there! We've been working hard and today we're proud to announce the release of MTA:SA 1.6. You will receive an automatic update soon, but if you don't have MTA installed, you can get it from the home page. Statistics This is the 27th 1.x.x release 623 days of which 553 for beta release 12 backwards incompatible changes 26 new functions 1 new event 5 deprecations 289+ bug fixes and changes 956+ commits (mtasa-blue) (mtasa-resources) 199 new open GitHub issues (see list) 102 resolved GitHub issues (see list) 92 closed GitHub issues (see list) 44 new open GitHub pull requests (see list) 219 merged GitHub pull requests (see list) 107 closed GitHub pull requests (see list) 45+ contributors of which 17+ are new (see list) 100+ total contributors (see list) 23 vendor updates Download This release is not backwards compatible with previous releases. This means that you cannot use 1.6 to play on 1.5.9 servers. If you're a server owner, please take note of the Changes in 1.6 wiki page, more specifically the Backwards Incompatible Changes. You may need to update your scripts for 1.6. Servers: binaries are available. Don't forget to backup and update your default resources. WANT TO DOWNLOAD THE MOD? CLICK HERE (Win7/Win8/Win10/Win11) Important notice to Windows 7 and Windows 8.x users If you are using Windows 7 or 8.x, please upgrade your system to Windows 10 or 11 as soon as possible. Windows 7 and 8.x are no longer supported by Microsoft (since January 2020 and January 2023 respectively) and most software (including Google Chrome and Steam) which means you are running an insecure system. Multi Theft Auto will also eventually drop Windows 7 and 8.x support sometime in the future, so it would be a good idea to start looking at upgrade options right now. Thank you! CEF in MTA is no longer updated for Windows 7 or 8.x. This is because CEF no longer supports those versions of Windows. This bad for security, so please upgrade to Windows 10+ and MTA to 1.6+ We currently provide two variants of the MTA client, one for Windows 10+ and one for Windows 7/8.x and you can find the download links also conveniently on our home page by pressing the Download button, which reveals a dropdown with the two options. Merch If you feel like getting some of that official MTA swag, check out the merch store here: https://streamlabs.com/mtaqa/merch and wear that MTA gang drip at school or work. Our Spreadshirt store has been discontinued in favor of Streamlabs. AMX (SAMP) amx is a software package that allows the execution of unmodified San Andreas: Multiplayer 0.3.7 gamemodes, filterscripts and plugins on Multi Theft Auto: San Andreas 1.5.8 and higher servers. It is open source, and a prebuilt binary for Windows is available for testing purposes right now. The AMX team hopes that more people get involved with the development on GitHub as they need some help! Check out our GitHub repo for more information on how to use your SAMP scripts in MTA! 1.6 Highlights This update is meant to focus on fixes and changes, that were held back for a few releases in the past due to their compatibility-breaking nature, rather than new features, but there are already a lot of features planned for the next release! Here's a list of highlights for this release: Many high FPS related inconsistency issues have been fixed by @MerlinMagic Script support for custom IMG containers, and ability to set model flags. Thanks to @TheNormalnij A number of graphical effects Added support for vehicle sun glare effect. Thanks to @Nurupo and @TheNormalnij Added corona rain reflections. Thanks to @lopezloo Added big sun lens flare effect. Thanks to @Nurupo Added dynamic ped shadows. Thanks to @lopezloo Grass should now render correctly. Thanks to TFP-dev. ARM support for MTA server is here! This support should still be considered experimental. Thanks to @botder Added new Default 2023, GWEN Blue and GWEN Orange GUI skins. Thanks to @Haxardous Added missing GTA special character skins (3, 4, 5, 6, 8, 42, 65, 86, 119, 273, 289). Thanks to @Allerek Pictures taken with the camera weapon are now saved in higher quality. Thanks to @lopezloo Many stability improvements Many synchronization improvements Many varying size fixes, quality of life improvements, updates and security enhancements to both core and resources! Updates to all language translations from our Crowdin If you are a scripter, you really should wanna dig in to these improvements! Show off your creations on our #showroom channel on our Discord server and have a chance at getting your work featured on our social media pages. Read the 1.6 release notes for a complete set of changes and more information about the improvements listed above. Watch or star our GitHub repository to keep on top of all the things we're working on. Important script changes In this version of MTA there are numerous backwards incompatible changes and refactors that may affect old code. Bloodring Banger (504) is now defined as doorless, to fix animations to be consistent with single player, this also causes setVehicleLocked to not lock the vehicle anymore, as entry happens through the window. callRemote callbacks currently set the error code to nil when there is no error. In 1.6, to be consistent with fetchRemote, the error code reported will be 0. See GitHub #294. Since July 2016 if you provide an invalid string like "randomstring" when a function expects a number, the string will be treated as 0 and raise a script warning. In 1.6 this will be an error. You will still be able to provide strings containing numbers (e.g. "100" and "12.34"), this change only affects invalid strings. See GitHub #1043. When providing a width and height of (0, 0) to createBrowser or guiCreateBrowser you will encounter a script error instead of a warning. The warning was introduced Feb 2019. See GitHub #1069. Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error. See GitHub #1070. Since Aug 2015, we replaced the custom mtalocal:// URL scheme with http://mta/resourceName/blah.html. This mtalocal:// URL scheme will now be removed. See GitHub #1071. The previously unused z argument in getElementsWithinRange now calculates elements in 3D space instead of 2D space. See GitHub #1994. Flamethrower ammo is no longer multiplied by 10. See GitHub #481. Server-side createBlip now syncs blip size and color regardless of icon ID, previously only icon ID 0 had its size and color synced to clients. See GitHub #1399. Server-side givePlayerMoney and setPlayerMoney cap has been raised from 99.999.999 (8 digits) to 999.999.999 (9 digits) to match the maximum native UI value. See GitHub #2654. Players are now synced when exiting vehicle. See GitHub #2084. Server-side objects that were unbreakable by default, but would have been breakable client-side by default, are now breakable by default also server-side (commit). Deprecation: Changed getCameraShakeLevel, setCameraShakeLevel to throw a warning on use, please upgrade to getCameraDrunkLevel and setCameraDrunkLevel instead (commit 2651903). You can use the upgrade console command to automatically upgrade your scripts to use the new functions. Deprecation: Changed givePedJetPack, removePedJetPack and doesPedHaveJetPack to throw a warning on use, please upgrade to setPedWearingJetpack and isPedWearingJetpack instead (commit 804c66b). You can use the upgrade console command to automatically upgrade your scripts to use the new functions. What happens to 1.5? 1.5 installations will be kept intact, to let players and server owners switch over to the new version whenever they feel they are ready. However, new features and changes will only be available on 1.6, so please upgrade! Note, that you can have both 1.5 and 1.6 installed at the same time on your computer to allow you to switch between if you want. MTA will prompt you to switch to the correct version if the server doesn't support your current version. What's next? We already have new features lined up for 1.6.1, and you can find them on our 1.6.1 milestone on GitHub. Multi Theft Auto depends on community input and contributions. To keep a project like MTA going we need LOTS of people. You can help in the following areas: Testing and bug reporting Whenever you encounter a bug or recognise a need for improvement, we can't fix it until you tell us your problem! We're continually working on new features and fixes for MTA, and this always needs testing. Join our Nightly release stream and make sure you keep in touch with on Discord and report issues on GitHub. Programming If you know C++ you may be interested in helping improve Multi Theft Auto's client. Working on open-source software may seem scary, but the best way is to try! Read GitHub's open source guide, and then find an itch to scratch, or scratch your own! Documentation Documentation is important, but also time consuming. If you enjoy writing and have some knowledge of English, or you would like to translate the English version to your native language, you’re very welcome to do so. Just head over to our wiki, create an account, and start editing! Support Do you like people? Can you give calm and thought-out responses to users needing help? Then you can spend some time providing support to those who need it. Many answers can be found on our wiki, so make sure to take some time to read it. Then, either join our chat or forums (linked below), or simply help us sort out issues and answer questions on the GitHub repository. Translation We moved to Crowdin from our old Pootle setup, and people have been actively contributing fixes and new translations. Thank you all! Work is still not over, though, as translations may update in the future or new ones may come along, so keep an eye on Crowdin Want to translate MTA to your own language? Awesome! Visit us on Crowdin. As soon as your translation is approved, it will be pushed to our repository for use in future releases. Donations Keeping the MTA downloads, master server and websites alive costs money! If you want to help us sustain our financial expenses, please donate! Show your creativity! We are actively looking for new creations on our #showroom channel on Discord, as well as #mtasa on Twitter for content we would like to repost on our social media pages and pin on our annual recap forum post. Follow us on our social media channels: Twitch, YouTube, Facebook, Reddit, LinkedIn. Thank you! Thank you to the following communities and community members for their donations since last release: @Blokker_1999, NEXTRP, MTA DayZ Ultimate, DubaiRP, INCEPTION-MEDIA, Purge Roleplay, @Arran, @0xCiBeR, @IIYAMA, fransg, Badandy, Nasser Alshahrani, @JessePinkman, Complex Roleplay, FoxG, Grand Roleplay, Lopaha, Matrix Network, @Platin, San Andreas Roleplay, Scott Malone, ChefaoDev, DonNiko and 6 others who did not provide a name. (If your name is missing or you want to change your entry above, please let us know on Discord!) Thank you very much to the following community members for their work towards this release: @4O4 @Addlibs @AGENT_STEELMEAT @Allerek @androksi @Arran @BCG2000 @botder @ccw @cleopatra @darkdreamingdan Dark-Dragon DarkDrifter Nacim @Disinterpreter @Dutchman101 @efex @Exilepilot Fernando Rocha @Haxardous @Inder00 itslewiswatson @JessePinkman @Jusonex @lopezloo @Lpsd @Lvrent lyncon @Megadreams @MerlinMagic @Mkl @Mvrat @myonlake @NanoBob @Nurupo @pieT @Pirulax @qaisjp RatajVaver ricksterhd123 @samr46 @Santi @Sarrum se16n @srslyyyy @Strix@TEDERIs TeteX1 TFP-dev @TheNormalnij Tracer @turret001 vahook vyn666 @Xenius @xLive @Zango and many others who contributed to our Wiki and helped out with issues. (If your name is missing or you want to change your entry above, please let us know on Discord!) Thank you also to our translation contributors on Crowdin: Khazarli, Vampire, FernandoMTA, Shady, xLive, turret001, markenzy, Danx, Zorgman, Maestro-17, deihim007, pieT, mcak105, Hydra45, efex, NetroX, Megadreams, Citizen, WhiteGren, nitrocat21, Pablo, azzmanfilms, Caram1lo, AzukieGTA, MrBad, acedia, YozoraWolf, kordy, Stoned, mdmnmtasa55, Xocopinho, sorinalex36, Haxardous, djebzer, Abasalt_Yar, Nick026, Hydrogen506, Rataj, amirjfp, RidwanRF, q8X, mbeltowski, antimarte, guillaume.dorczynski, morpp, Derbo, Pawcio, Lachuks, Insigne, raikopajusalu52, phammybear, dronor589, Koizumi, R3L4X, Danial123, lenovoactin, i7amod., Shuubaru, Driver, datuna22, TRtam, Dezash, 0xCiBeR, Nebla, Stickey21, xxxx, PatrikX23 You could be on this list! We're always on the lookout for new contributors. Contribute on GitHub, translate on Crowdin, and chat with us on Discord. We have channels for scripting, general support (bugs), mod development, and many more! Thank you to all beta testers for the past couple of months of feedback and bug reports! And one more thank you to every member of the MTA staff who helps support this forum and Discord. Without your efforts, this project would not be nearly as successful as it is now. Also a big thank you to the new MTA helpers team who support our users on this forum and Discord! Finally, please give a to our newest staff members @Vinyard and @Zango; newest helpers @The_GTA, @Reyomin and @Vampire; as well as newest contributors @androksi @BCG2000 DarkDrifter Nacim @efex Fernando Rocha @Inder00 @JessePinkman lyncon @MerlinMagic @Mvrat @Nurupo @Santi TFP-dev Tracer @turret001 vahook vyn666 -- Have a good one! — MTA Team
    24 points
  21. Summer is over, but fear not, we have got a new release for you - Multi Theft Auto: San Andreas 1.5.5! This release is focused on bugfixes (most notably, some popular crashes were fixed with help from @Dutchman101 - eg. this one, code cleanups and under-the-hood improvements for developers (migration to a Docker-based environment and support for VS2017 and GCC-6). It may look like it is not much of an update, but the amount of such smaller changes should be a good incentive to update. In other news, we have enabled some additional forum account security features for your convenience - namely a possibility to set a security question(s) for the account and support for Authy and Google Authenticator two-factor authentication. You can enable them in your Account Security settings. Release Highlights updated CEF elements and fixed red/blue color swap issue with Intel VGAs added 'localhost' to the hardcoded CEF whitelist modified launch patcher to work with more exe variants added black outline option for chat text fixed #4166 ("Engine Sounds of other Helicopters and planes missing unless you get in a Helicopter or plane.") fixed #9681 ("Unable to hear proper engine sounds when sitting in car as passenger") fixed #3944 ("Radio titles do not always show.") fixed #8590 ("createEffect with some effects places it's sfx sounds to position 0,0,0") added guiGetCursorType(), isResourceArchived(), getDevelopmentMode(), setDevelopmentMode() (used to be client-only, now it's also server-side), debugSleep(), setVehicleModelExhaustFumesPosition(), getVehicleModelExhaustFumesPosition() improved client connections through firewalls fixed FOV setting not updating censored onClientConsole for login command potentially fixed crouchbug resource pack: various changes in admin, editor, freeroam, headshot, ipb, joinquit, killmessages, play, and realdriveby ... plus more! A complete list of changes can be found here (recommended read) and here (incomplete, from r11302 upwards). List of changes to the resource pack can be found here (starting from and including Apr 22, 2016 upwards). Want to download MTA:SA 1.5.5? Click here to download the build for Win 7+. Looking for a legacy build for XP/Vista? You can download it here. Or you can click here to go to our home page. Once there, click the Download button at the top center of the page, then choose your build and you are set. Linux server packages are also available. This release is backwards compatible with other 1.5-based builds (1.5.4, 1.5.3, 1.5.2, 1.5.1 and 1.5). However if you still use these versions, why not upgrade to the newest one? It works just as good, or even better. Community credits for this release: AboShanab, Arran, CrosRoad95, Dezash, Dutchman101, emre1702, Gothem, lopezloo, Necktrox, qaisjp, Sergeanur, ZReC ^ Have you contributed to MTA:SA 1.5.5's source code/resources pack but were not mentioned in the above list (or maybe you would like to modify your entry above eg. change your nickname or add a link to your Twitter/Github)? PM @jhxp with a link to your contribution (for missing entries only) and you will be added ASAP ^ See y'all. -- MTA Team
    24 points
  22. Hi there. The Winter Holidays are here, so as usual we have got a new recap and status update post for you. Here is the summary of what has happened this year. ? 2018 in Recap We made efforts towards the new release through the first half of the year, so there was not much to talk about. There was an incompatibility issue with the 360 Total Security software which we advised you about and later in the year, there was a similar issue with McAfee. Late July, we have asked you about your thoughts about refreshing the community.multitheftauto.com portal. We have received some interesting feedback from you and we are still thinking about ways of implementing it, while considering our current resources. Also in July, we have migrated our bug tracking services to GitHub Issues, making it easier to track specific issues and link them to GitHub commits and pull requests. This has also allowed us to clean up our bug tracker - the old system had nearly 8000 tracked issues, some of which were 13 years old or so. On 7th of September, we have released Multi Theft Auto: San Andreas 1.5.6. This release added support for custom IFP animations among other things, like fixing the input and FPS lag reported by some of our users. Then a few days later, we have advised you to upgrade your MTA:SA servers to the latest version due to a server crash exploit that was discovered. There were some additional issues with this hotfix that were spotted later, but they have been all fixed within few days. If you have not yet upgraded your servers though, we still urge you to do so. ? A bunch of interesting MTA:SA-related YouTube videos from this year nX_ Vol.18 - CodeNX™ - 첫 장 - video by ElCrowMvs / map by nX [GTA:DM] Wonder - Interstellar - by Wonder MTA [MTA] Vice City - Map Preview #1 (JStreamer v3) - by Liberty City Roleplay Multi Theft Auto - Tactics - by LoG4nTG Multi Theft Auto - MTA CIT / GTA SA - San Andreas Police Department's 7th Anniversary (Dance Show) - video by PeteyFTW / server: CIT Multi Theft Auto San Andreas Fail + Funny moments #1 - by Mr. Green Gaming Multi Theft Auto: San Andreas - MTA DD - Map: Orgazm Cross - video by Game Master / map by Orgazm MTA:SA Fast And Furious Paradise Trailer ! - by SDRIFTER Abdlmounaim ? Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 30625 players 2018.12.16 (at 16.30 GMT) Highest recorded number of concurrent unique players 34653 players 2018.02.03 (at 17.30 GMT) Recent number of daily unique players 150390 players 2018.12.01 (Saturday) Highest recorded number of daily unique players 185818 players 2018.02.03 (Saturday) Recent number of monthly unique players 605834 players November, 2018 Highest recorded number of monthly unique players 805903 players January, 2018 Player counts were just slightly lower than last year, but we have also had some nice peak values at the beginning of the year. Good to see that there is still an interest in old but great games. MTA:SA Version or series Percentage of players using that version or series as of 24th of December, 2018 1.6.0 (alpha) 0.05% 1.5.6 97.20% 1.5.5 2.00% 1.5.4 (and older) 0.40% 1.4.x 0.20% 1.3.x 0.15% Similar to last year, two of our most recent releases are used by over 99% of our player base. It means that there is little fragmentation between our releases and that players in general upgrade to the newest release once it is available. Also, there seems to be some interest in the newest alpha version as well - that is nice too. ? Status updates Community-wise, our Discord has expanded this year - currently we have got 10 language-specific sections available for you there, as well as the active as usual English ones. We have also opened a new forum section recently to keep appeals for global game bans in one place. Over the next few weeks we intend to refresh our forum rules to better suit the current forum needs. As for mod's development, we will continue working on the next release. We are thinking of integrating a new version of the client installer to reduce amount of issues encountered when installing MTA:SA (as well as to make it easier to investigate the remaining ones). We will also consider adding new features provided by our community members, such as editing collisions and adjusting surface properties by CrosRoad95. That's it for now. ?❄Happy Holidays and all the best to you in 2019! ? -- MTA Team
    23 points
  23. Introduction Modding is a term used when modifying components, files and what not, in this particular case modifying game installation files in order to achieve unique results not seen in the vanilla game. GTA:SA is 3D era, where modding the game requires special 3D packages. Older games such as GTA:II uses a 2D engine, which means that modding the game was commonly done with image editing applications. We will cover some aspects of modding game textures and models. This guide intends on introducing those inexperienced with modding and 3D as a whole, on how to obtain 3D software and their recommended tools. It also introduces ways to import and export models, basic workflows for 3ds Max, texturing and creating models. TOC 3D packages, helpful tools and how to obtain them Extracting game assets How each type of game model works Limitations - MTA vs GTA Working with 3ds Max Texturing a game-ready cube 3D packages, helpful tools and how to obtain them There are various applications being used for modding. Although some has more tools available, there really isn't one that tops the others. In this section there'll be lists of a few 3D packages and tools used for modding. 3ds Max, arguably the most used program with the greatest amount of third-party plugins and scripts for various games. For GTA:SA, this program is favored by many modders due to it having 3rd party scripts for dealing with animations, collisions, lighting, modeling etcetera. There isn't much that 3ds Max can't, that other programs can, when it comes to GTA:SA modding. Although this can be expensive to run on a longer term, there are education licenses available which last for 3 years. These do not allow commercial use, and is marked purely as "educational use only". View more. Kam's (vanilla) max scripts, the first official script package for modding GTA:SA with 3ds Max. After the release of his scripts, a lot of others has developed scripts of their own, some of which are more optimized and less prone to issues. Even despite Kam's scripts having overseen issues, it is still to this day widely used for tasks such as, but not limited to; IPL map generation and import, collisions, animations, characters, vehicles, environment modeling. View more. Kam's (2018) max scripts, a modified version of Kam's vanilla scripts for 3ds Max. Notable features that were added are; DK22pac's Normal map plugin support, reflection map support for environment models, 2dfx panel for lights such as aircraft lights or street lamps. View more. The Hero's RW importer/exporter, a modern plugin that works extremely well with vehicles and environment models. Due to its simplified layout it is very easy to get used to. It's far recommended to use for vehicle model import/export due to its quality handling and materials, which are based on RW formats (renderware, the engine GTA:SA runs off). With the plugin using different model material formats from Kam's, it comes with a maxscript to convert scene materials from GTA_MTL to RW_MTL and vice versa, if needed by the modeler. View more. Deniska's max scripts, a pack for various types of GTA:SA modding, some features are obsolete for MTA users due to IPL and IDE modification required. Although, the pack does come with a few tools that may be useful to MTA modders, such as prelight tools to set the vertex colors and illumination to fixed values. View more. DexX's 2dfx export script, a standalone 3ds Max script that exports Omni and Dummy informations to .sae file formats, to then be added to the .dff using RW analyzer. With this script it's possible to integrate lights and particles into custom models, e.g flashing aircraft lights, street lights, fire and smoke, etcetera. With the release of Kam's 2018 scripts, this script is used less as using Kam's may be less work for some cases. View more. Blender 3D, a freeware (yes, completely free, no paid watermarks or any limitations), not as favored by modders throughout the years until recently, where a developer has released his script 'DragonFF' on GTAforums. Although it is WIP, modders has already binned 3ds Max and moved permanently to Blender. Although Blender is free, it actually combines several programs into one, allowing a Blender user to sculpt, paint, do lighting, professional rendering and modeling in one. A recent update in 2019 changes the RMB selection to LMB and UI among other things, making for a potential alternative to 3ds Max. View more (Blender). View more (Blender GTA script) Zmodeler, not as commonly used as the aforementioned programs, although it is being used very frequently by modders in various games, most notably for GTA:games. It does not have support for skinned characters, although it is being commonly used for vehicles, and sometimes environment modeling as well. This is a fairly inexpensive solution, but lacks tools for more broad modding. View more. Sketchup, a 3D application that focuses on architecture. For modding, it is a rather uncommon, though has a free and paid version and can be used for seemingly OK modeling. It does not have access to any 3rd party scripts for GTA:SA, hence its only use is modeling and then exporting model files to then import into 3ds Max or Blender. View more. Photoshop, mainly used for graphic design, but can also produce 3D models, video, GIF and textures for assets. Photoshop is the most favored by modders in regards to working with textures e.g paintjobs and retexturing. Although there are alternative image editors in the market, Photoshop definitely hits the top in terms of usable scripts (user-customized scripts as well) and ease of workflow. View more. DFF Viewer, a 3D graphics engine that is used for visualising GTA:SA models and supports .DFF and .TGA formats. Only single dff's can be loaded at a time. Though this is rarely used by those who has access to 3ds Max and Blender, it is commonly used for troubleshooting/testing work that involves retexturing a model e.g changing the clothing textures of a character. This program is entirely free and available from various GTA modding sites. View more. TXD Workshop, a texture dictionary editor that has been around for years, only since recent years to be succeeded by Magic TXD. Though TXD Workshop may not be the best for setting up TXD files, it has a built-in IMG archive editor, allowing one to browse all of the contents of gta3.img. View more. MagicTXD, a new texture dictionary editor with features for mass exporting .TXD contents from folders into image subfolders, texture compression, mipmaps, resizing textures etcetera. This is broadly used for .txd files and almost took over TXD workshop when it comes to working with texture dictionaries. View more. RW Analyze, a multi-use program with notable features being; ability to lock/unlock game files, add data to game models e.g 2dfx and vertex colors information extracted from other DFF files. View more. Extracting game assets In order to start modding GTA, access to the files is required. The files in question are commonly found in parent files that require some sort of program to open. In this case, TXD Workshop or any IMG editor and optionally Magic TXD for later on will work just fine. The below steps shows one way to extract all models and their texture dictionaries. For IMG editors (e.g Alci's IMG Editor): Open the editor. Under File, select Open. Find gta3.IMG stored in GTA SA directory\models. Highlight the first file in the list, then scroll down to the very bottom and SHIFT+LMB click the file on the bottom. This highlights every file in GTA3.IMG. Right click the list of files and select Export. On the popup window, find and select, or create a new folder on desktop called GTA SA ASSETS. Click enter to proceed. ((For cases where specific files are wanted, use the search field to find the necessary files and export them individually)) For TXD Workshop users: Open TXD Workshop. In the toolbar it says Open IMG. Click this, then find and select gta3.IMG stored in GTA SA directory\models. Highlight the first file in the list, then scroll down to the very bottom and SHIFT+LMB click the file on the bottom. This highlights every file in GTA3.IMG. Right click the list of files, select Extract. On the window, find and select, or create a new folder on desktop called GTA SA ASSETS. Click enter to proceed. ((For cases where specific files are wanted, use the search field to find the necessary files)) Now the folder GTA SA ASSETS contains nearly every .dff, .col, .txd and so on used by the game. Assuming one would like having all of the textures in PNG, DDS, TGA or any other common image format, they may follow the below steps using Magic TXD. Inside GTA SA ASSETS create a new folder named IMAGES. Open any .txd file found in GTA SA ASSETS using Magic TXD. Navigate to the toolbar. On Tools, click Mass export. Export settings are as following. Game root = root folder containing TXD's Output root = folder where images goes Image format = self explanatory With texture names only = exports images directly to folder and duplicate named ones gets replaced by one another Pre-pended with TXD name = exports images with TXD prefix In separate folders = makes new folder(s) for every TXD's contents Hit export. This process may take some time. Note that this process is the same for other .IMG archives such as player.img. There are also .txd and .dff files elsewhere, such as \models\generic\generic.txd, which is the vehicle shared texture dictionary file. How each type of game model works Models used on GTA SA uses different rendering techniques and data hierarchy than others. This section will introduce the features that some models has that others don't. Vehicles: Vehicle model components utilises hierarchies, where each component is linked to a dummy (helper) and each dummy is linked to parent dummies e.g chassis_dummy, for them to be registered in the hierarchy. In order for vehicles to not look flat or cartoon, a few steps are made in the model; Diffuse material is given a grunge texture or AO map, this helps telling the depth of the vehicle as well as giving it a feel of realism, so it isn't just clean. A specular lighting image is applied to the vehicle surface material, giving it a fake shine when looking from certain angles. If the vehicle has hard edges (smoothing), this image can increase the visibility of the normals, retaining its original look rather than being flat without visible difference in geometry. An environment (ENV) map is applied to the vehicle surface material, producing a fake reflection that is animated horizontally as the vehicle travels. Vehicles also has a lot of hardcoded features such as headlights, brake lights, emissive lights, taxi/aircraft lights, rotatable components and dynamic collisions for special vehicles like Forklift. Vehicles are also the only dff models that uses baked collisions, which means they are stored in the .dff itself. Below is a detailed hierarchy used for cars, and special components used by a number of vehicles (click the spoiler). Skin characters: Ped skin characters uses bones (dummy objects) that are connected to each other and linked to the character model. These bones are not visible in-game. In order for the bones to know what part of the 3D model they're responsible for, the skin needs to be rigged. Character rigging for GTA:SA is done by applying weigh on vertices. Using heatmap display, colors go through blue-red, low-high respectively. Values go from 0 to 100. If the value is 0, it means that the vertex is not used for any bone. This can cause issues. If the value is < 100, it means that the vertex is used for multiple bones. This results in smooth animations ingame, as the 3D model transitions smoothly through each bone. If the value is 100, it means that the vertex is only responsible for one bone. Skin rigging is generally something that is being avoided by modelers and makes Skin modeling the most difficult on GTA. Bones are as shown: CJ character: Carl Johnson's 3D model is split into several pieces in order to be compatible with the clothing script used to let the player customize CJ. These models uses a function known as multiclump to support 3 meshes per dff; normal, ripped and fat. This is for CJ's health stats to physically show in-game. Other than multiclump and additional bones, modding CJ skin is essentially the same as any other ped skin. Map environment: World objects .dff contains only single models, though they do support omni and dummy objects for 2d effects. These types of models uses Vertex Colors/Face Colors. This requires the modeler to paint colors onto the model which is then stored in the vertex colors channel (daytime) and vertex illumination channel (nighttime). Although uncommonly used by R*, these models do support reflection maps like vehicles use. Goldfish's modified version of Kam's scripts is excellent for exporting with reflection maps. GTA SA utilises multiple collision archives (.col) for every IPL district, being responsible for all of the world objects' collisions. However, on MTA, collision archives are not supported, so custom collision files are single models per .col. Not every object uses collisions though, some merely has their bounding space. These objects can not be selected with MTA map editor, thus requires additional scripting or modding. Limitations - MTA vs GTA Speaking of native support, MTA currently is behind in several places. Notable features that aren't available on MTA, but on GTA are as following. Item Placement (IPL) - another type of mapping file, but contains a lot more functions such as zones for real-time reflections as seen in interiors. Item definition (IDE) - a file used to but not exclusively, define settings for models, enabling alpha flags, disabling backface cull, enable breakable effect and much more. Limit adjuster - a rework of the game that allows for adding more ID's and bypass common limits. This however is being developed by one of MTA's contributors. There are various limitations such as polys per model, max dimensions for models and collisions, (very) strict size limits for collisions and CPU usage that can easily cause issues for modders. Not to mention the majority of the game data files which most MTA servers likes to force original, else the player won't be able to connect. These limits all has potential solutions being developed as with the limit adjuster. Working with 3ds Max As described above, 3ds Max is without a doubt the most common program for GTA modding. It's also used by professionals within architecture and visualisation and film industry. What's amazing about this program is that whatever is created in 3ds Max can ultimately be added to the game. A modeler made a square - it can get added right away, no adjustments required. That's the charm of 3ds Max. There's no need for additional tools to process the model for it to be compatible with GTA. It is also the primary program that Rockstar's developers used for creating the environment in GTA:SA. At a first glance, the program may seem rather intimidating. The main functions of the program that a beginner should be aware of are listed below. Shows the default home screen with 4 viewports. Left, Top, Front and Perspective. The 3 side ones are Orthographic viewports while Perspective is in regular mode. It is also the most common one to use. Highlighting a viewport and pressing (left)ALT W will full screen the viewport. In order to rotate camera view, the user must click and drag the square in the upper right corner. Its face also tells which side the camera is viewing e.g Top. If one wishes to see viewport statistics such as polygons per model, vertex amount etc., clicking: [ + ] icon on the upper left side > Configure Viewport > Statistics > Total + Selection > Apply > Clicking 7 on keyboard shows the statistics. This feature is extremely useful for modelers who are limited in polygons per model, or simply wants to see how many polys a car is. Common keyboard shortcuts F1: Opens Autodesk help section in new browser tab F2: Displays blue overlay on models F3: Displays models in wireframe F4: Displays edges on models F10: Opens render setup 9: Shows viewport statistics Q: Select objects W: Select and move E: Rotate R: Select and (mode) scale U: Orthographic viewport mode P: Perspective viewport mode A: Toggle angle snap S: Enable snap D: Disable viewport G: Enable/disable grid J: Display bounding edges LALT X: Xray mode for model Ctrl Z: Undo action Ctrl Y: Redo action In a heavy program like 3ds Max, being able to change preferences to one's likings is important. Do so by going to Customize > Preferences. Performance, file settings and such can all be configured in there. For GTA:SA modding, knowing how to subdivide and add geometry to existing GTA models is very important. Below is a list with actions that may come in handy. No-brainer: Editable Mesh is inferior to Editable Poly. Use Poly, poly, poly, poly... Editable mesh modeling Vertex selection mode Edit Geometry section Attach: attaches another model in the scene to the selected mesh Chamfer: chamfer selection of vertices; creates additional geometry Weld: merges vertices together within a specified threshold Surface Properties section Edit Vertex Colors: sets the color and illumination of selected vertices Edge selection mode Edit Geometry section Divide: divides an edge, adding a new vertex where it was divided/split Extrude: create and pull a new face out from existing edges (keyboard shortcut: LSHIFT + LMB-drag) Face selection mode Edit Geometry section Divide: creates a new face Extrude: pulls the select face(s) outwards or inwards and creates new geometry off that Bevel: essentially an Extrude followed by scaling of the face Surface Properties section Flip: flips a face 180 degrees Smoothing groups: defines the smoothing of the model. Autosmooth is in many cases OK, but may not fulfil everyone's expectations Editable poly modeling Vertex selection mode Edit Vertices Connect: selecting 4 verts on a box side and using this function will triangulate the side. Edge selection mode Edit Edges Connect: creates an edge between the selected edges, as in a bridge between two cliff sides (use the 'Settings' to choose between multiple or one edge on creation) Polygon selection mode Edit Polygons Inset: places a new polygon inside the selected, allowing to be scaled Bridge: connects two opposing polygons by creating a bridge between them (can be used for walls and gaps) Edit Geometry Slice Plane: enables the user to create a perfect cut on the model, can be rotated by degrees Rendering scene Modelers working on projects for companies or friends might want to show what they've accomplished, but a regular screenshot may not suffice. Talking of a screenshot like this: Instead, the modeler might want to show the scene with textures. Perhaps more than just textures - lighting? reflections? transparency? - this is where 3D rendering comes into play, and can be done by simply pressing SHIFT + Q on the keyboard. This can also by default use alpha channel. However, the quality could improve. The quality of the render depends on the scene assets (models, materials, lights), the Renderer and its settings. By default, 3ds Max utilises Scanline Renderer. This is not a production quality render, but rather meant for test shots and demos. Though the quality isn't great, it's still possible to produce seemingly interesting renders. The following render took merely 8 seconds. Using 3ds Max allows modders to bring GTA:SA into modern graphics, easily comparable or even superior to ENB's. It also enables modelers to share visualizations of their models to help the customer understand how it could potentially look for their game. In the above render, a Skylight is used with Scanline Renderer. A very basic render, though interesting and contains lots of depth. In order to replicate this result, below are the steps to follow: On the Create panel, where one would normally find boxes and spheres, click the toolbar Lights. Where it says Photometric change that to Standard. Click the Skylight and place it in the 3ds Max scene. Settings for Skylight explained Multiplier: intensity of the light Sky color: the color of the light Cast shadows: enable to produce shadows, though this is more of an Ambient Occlusion than actual shadows Rays per sample: quality of the shadow, ideally keep at <5 for tests and 15-20 for final shots In the actual render above, a sample of 5 was used, creating grainy shadows but quick render. Backface culling was enabled to avoid slowing down the render time. Skylight is great light source and is generally used to illuminate an entire scene and not particular models. In the same Lights tab, one may find use of Omni or Free lights, which both works great. These are great point lights, which as opposed to skylight, are able to illuminate parts of the scene e.g acting as street lights. Modifiers When modeling, modifiers can come in use and save the modeler a lot of time. The following modifiers are highly suggested for beginners to know about. Bend: bends the model, effect depends on the differences in the geometry Mirror: copies the mesh and mirrors it on the other side, commonly used for vehicles using symmetrical geometry Smooth: generates and applies smoothing to the model, generally the lower values makes for higher file sizes Symmetry: essentially the same modifier as 'Mirror' Turbosmooth: Smoothens the mesh, adding geometry, uses iterations Unwrap UVW: advanced UV editing, commonly used for preparing textures for models like characters and game assets UVW map: basic UV editing, X/Y/Z projection mapping as well as spherical, box and planar mapping Vertexpaint: allows for painting colors onto vertices and faces, these colors are rendered during either ingame or night time Texturing a game-ready cube Modeling has to start somewhere. Using standard 3D primitives is a good place to start. For the purpose of this guide, a Cube will be created in 3ds Max and textured in Paint.net, a free image editing software. Video tutorial: To start off, navigate to 3ds Max's Create tab on the right hand side panel, as shown below. Shows the Create tab on the panel. For this guide, click on Box (Cube). Use LMB and click and drag the mouse in the viewport to create the cube. Now that the Cube primitive is spawned in the viewport, on the same panel that it was created from, go to Modify tab and set its dimension parameters to 5,0, 5,0, 5,0 and 1 segment for all 3. Convert the model to Editable Poly by right clicking it in the Viewport > Convert to > Editable Poly. Go into Polygon selection mode and scroll down until the following buttons are visible: With viewport selected, on the keyboard press `CTRL A` to select all faces on the cube. Now, where it says `Color`, click the bar and on `Value` set it to 100, then do the same for `Illumination` but value at 35. What this does is it sets the vertex colors so that the model won't be overexposed during day/night time. Exit polygon selection mode and on Modifier List, click that and find Unwrap UVW. This applies a modifier stacked on top of the Editable Poly mesh. Under Edit UVs click Open UV Editor. This allows the user to make changes to the UV coordinates which tells the model how textures are projected onto the model. On the editor, ensure that Polygon selection is enabled. While in the UV editor, press `CTRL A` to select all UV islands. On the top of the editor click Mapping, then Unfold Mapping.... Keep it as Walk to closest face and enable Normalize Clusters. Click OK. The result should remind the user of how a simple cardboard box in real life looks when it's yet to be folded into a box. With the model unwrapped, on the toolbar on the UV editor, click Tools > Render UVW Template. The export settings below are ideal for this particular task. If one wishes to know exact dimensions of each square, enable Seam Edges. After exporting, on the modifier stack, press Collapse to. This saves the new UV's. The width and height should be on a 1:1 ratio to avoid stretching issues. 1024x1024 is more than enough. On the rendered image window, click the Save button and find a location to save it in, name it Cube_unwrapped and use Alpha channel (optionally). Now open Paint.net and insert the image. Once happy with the result, export as cube_diffuse. Diffuse map generated with the help of a UVW template. In order to apply the texture on the model, simply drag and drop the image from file browser onto the model in the Viewport. Although the example above is not textured properly in regards to rotations, it shows what can be done by using UVW templates, and how easy it really is to produce textures for models made from scratch. The model can be directly exported as DFF. Materials are not required to be GTA or RW, they can be standard and still show ingame. Some exporters wants the model in Editable Mesh however, so converting it may be required. Thanks for reading this guide, we hope it helps and we wish you the best of luck with modelling! For questions on modding, please refer to MTA's modding FAQ or MTA discord #modelling channel.
    22 points
  24. It's official, MTASA has been bought and we are becoming SAMP. Future MTASA builds will be closed source and half the features removed. Have a nice day!
    22 points
  25. addEventHandler + group elements I noticed that some people like to add 10000000000000000 addEventHandlers for each element, while you probably only need 1 addEventHandler. Using ONE addEventHandler on a group of elements? Answer: local group = createElement("groupMyCutePeds") -- Create a custom element and save it in to the variable <group>. -- Create 3 peds. local ped1 = createPed(120, 5540.6654, 1020.55122, 1240.545) local ped2 = createPed(120, 5541.6654, 1021.55122, 1240.545) local ped3 = createPed(120, 5542.6654, 1022.55122, 1240.545) -- Set the parent of the 3 peds. setElementParent(ped1, group) setElementParent(ped2, group) setElementParent(ped3, group) -- Add an addEventHandler and use the <group> as <attachedTo> element. addEventHandler("onPedWasted", group, -- "onPedWasted" = serverside. "onClientPedWasted" = clientside. function () outputChatBox("One of my cute peds just died. ;'( No exceptions!") end) Code is untested, but the method is tested. Syntax for functions in example createElement syntax element createElement ( string elementType, [ string elementID = nil ] ) setElementParent syntax bool setElementParent ( element theElement, element parent ) addEventHandler syntax bool addEventHandler ( string eventName, element attachedTo, function handlerFunction, [ bool getPropagated = true, string priority = "normal" ] ) DO NOT disable getPropagated getPropagated: A boolean representing whether the handler will be triggered if the event was propagated down or up the element tree (starting from the source), and not triggered directly on attachedTo (that is, handlers attached with this argument set to false will only be triggered if source == this). If you disable this, children of the <group> element are not included. Make use of the element tree Element tree For applying addEventHandlers to elements created by the resource: Use: resourceRoot / getResourceRootElement For applying addEventHandlers to elements created by scripts of the resource: Use: getResourceDynamicElementRoot For applying addEventHandlers to elements created by maps of the resource: Use: getResourceMapRootElement I hope your code will be without... print(10^10^10^10) -- Print here: https://www.lua.org/cgi-bin/demo ...addEventHandlers in the future.
    21 points
  26. Hi. We hope that all of you are safe and healthy. The year of 2020 is finally coming to an end, so here is our traditional "A year in Recap" post for you. Below you can find the summary of what has happened during this year and a handful of other things that might be interesting to you. ?️ 2020 in Recap Surely, it is hard to mention this year without mentioning the COVID-19 pandemic. Many lives were lost and millions of people had to deal (and still cope) with the consequences of the disease. The pandemic had locked many of us down in our homes and forced us to change our lifestyles. These were the times when MTA:SA had seen the biggest number of players ever recorded. The achieved popularity growth still seems to be present even today, when you compare this year's numbers to the ones from a year before. April has marked the third anniversary of the opening of our Discord and a lot of things have changed since then. We have introduced more regional channels and made it easier to contact our team if you had an important matter to discuss. We have also made it easier for new users to check and accept our Discord Rules in their language. Our server has over 15.000 members nowadays (even after a little miss-click on the Purge users button during the year ?) and we are still working towards getting even more members. Some work has been done on reviving the AMX Compatibility Layer module. It can be used for running the existing PAWN gamemodes, filterscripts and plugins in MTA:SA. There is a public beta build for the Windows server if you would like to try it out. The module is open source - so you are more than welcome to contribute to it too. We have released Multi Theft Auto: San Andreas 1.5.8 in October. The changes in this release were mostly community contributions, improvements and bugfixes. It took us more time than usual to publish it, as nearly 407 days have passed since the last release. We hope that it was a polished enough build to be worthy of the wait. Aside of that, we have been experimenting with doing some MTA:SA related streaming on our Twitch channel for a while. Woovie has done an excellent job on these streams and covered a bunch of topics, such as the community servers and gamemodes reviews, Lua scripting and doing code reviews and QA. If you have not seen them, we have put some of them on our YouTube channel. Our Forums were overhauled this year. In addition to that, one of our community members has recently made a brief post about how the Forums have changed over the years. It is nice to see that there are people out there who are interested in the historical side of things too. ?️ A bunch of interesting MTA:SA-related YouTube videos from this year [DM] Disaster ft. BriaN - ABZU by Gerc & others Bullet physics in mta, progress by CrosRoad95 MASSACRE | NON-STOP MTA DAYZ by supraaa & others MTA Racing Tutorials || PART 3 || Useful ways for San Andreas racing. by Vilgefortz & others MTA: SAAW Star Wars - Kamino map pre-Alpha rare leaked footage by Einheit-101 MTA: Lumiverse: Atlas - Server - Dashboard (In-Depth Analysis) by lumiverse Rabbit hunt script for MTASA with extra map & skin mod by "Press start to begin" / True_Killuminati ! Epilepsy warning ! [DM] NeiT Vol.9 - Image Distortion by RRecords & others ? Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 38 696 players 2020.12.19 (at 18.00 GMT) Highest recorded number of concurrent unique players 52 098 players 2020.04.02 (at 18.00 GMT) Recent number of daily unique players 153 033 players 2020.12.20 (Sunday) Highest recorded number of daily unique players 185 818 players 2018.02.03 (Saturday) Recent number of monthly unique players 647 317 players November, 2020 Highest recorded number of monthly unique players 805 903 players January, 2018 The numbers are slightly bigger than in the last year. Some of the records were not beaten, but were a really close call. For example, nearly 800 000 unique players had played this year in April! And our recent concurrent unique players peaks are bigger than our last year's records for that. How does this compare to modern games, you may ask? You can check it yourself by visiting the Steam Stats page. Powerhouses like GTA V, CS:GO, PUBG and Cyberpunk 2077 have much higher peak players numbers, but we are surely close to some of the other well-known games - for instance Civilization VI, Terraria, Euro Truck Simulator 2 or Garry's Mod. We are even surpassing the recent player counts of games, such as Left 4 Dead 2, Europa Universalis IV or Borderlands 3 (at least on Steam). MTA:SA version or series Percentage of players using that version or series as of 23rd of December, 2020 1.6.0 (alpha; custom) 0.1% 1.5.8 98% 1.5.7 1.7% 1.5.6 (and older) 0.1% 1.4.x + 1.3.x 0.1% The latest versions are the most popular ones so the version fragmentation is not much of a problem. ? Status updates In terms of the mod development, we have been mostly monitoring the situation after the recent release for now. We have also received some nice contributions from the community developers, like the work done by fastman92 to improve MTA:SA's compatibility with fastman92 limit adjuster. Patrik has been putting a lot of effort into designing the new Community site - we would love to see those designs replace the old site one day. Team-wise, we are in process of doing major inner changes in order to improve the transparency and the quality of our work. These changes will be hard to notice at first, as they are strictly related to our Team's organization and policies (they will especially affect the Moderators Team). After a while though, you might be able to see their effects for yourself as well. That's it for now. ? ? Happy Holidays and best wishes to all of you! Let's hope that 2021 will be better than 2020. ?️ ? -- MTA Team
    21 points
  27. Hello, Effective immediately it's no longer possible to: - Report players to AC team - Appeal any global bans Do not attempt to report players to MTA staff team, or appeal any bans. It doesn't matter what you think or believe in, they will no longer be processed. A) If you need to report a player, please contact admins on the server they are playing on. Server admins should pay the amount of attention that staff in other multiplayer games (with hosted servers) typically pay, and owners should be mindful of script security and scripted anti-cheat solutions to fill in some cracks that started to be created over the past few years, and continue to do so as a result of lowered manpower within the MTA AC team. B) Appealing bans is no longer needed as permanent bans have been removed last month, and any of the handful of cases not covered aren't meant to ever be appealed, without exception. Temporary bans were never meant to be appealed, although some staff member's intepretation of that (while redirecting users) has varied - if you got a temporary ban, wait for it to expire and surely you got a feeling of what not to do/not to run next time while MTA is opened, to avoid getting banned again. AC team is actively monitoring the reliability & integrity of standard detections that may lead to temporary bans, that's one of the things its manpower still allows it to do, so you can see why we're confident to go this route - any leakage of appeals in places they don't belong/users contacting MTA about their bans anyways, our experience has learned is 99.9% users that know why they got banned but won't accept it and are persistent.. as before, all such inquiries won't lead anywhere, but especially now we said "No appeals anymore" there will be zero interaction and certain behaviors may also lead to removal from the respective platforms where inquiries are made in a persistent or disruptive fashion. Finally, regarding cheaters - the level of sophistication that our AC has reached due to years of playing a cat mouse game with cheaters, is a hugely raised border for cheats to be made and will continue to do so (as methods that were used in the past were patched as per the spoilered text in this topic, so they can't be re-used). However, with the loss of dedicated AC developers within AC team, comes that we can no longer keep up as before, this situation has existed for the past 2 years so as of this post nothing is abruptly changing, it's just the point of admitting we won't be tryharding as much as in the past to be known as totally cheater-free game, a reputation we held for long. If you look around in the gaming industry, you'll see that we held up pretty well in comparison, but the cheating industry (due to toxicity demand) has also hardened, and after 20 years we are low on manpower which is fully understandable. We will continue to bring AC improvements and get rid of emerging cheats and cheaters, but at our own pace, without external pressure or too high community expectations, from now on everything is on a best-effort basis and the point is that there may be periods during which we can't make any waves due to manpower constricts. You can see that this topic intends to lower your expectations and respect the amount of free time we (as volunteers) are able to invest, and get off our backs for things being different compared to some years ago. We're also OK to restrict ban appeals and player reports so we can delegate all of the manpower that's left on our new strategy, breaking cheats (patching them) and just preventing them from working to begin with, instead of permanently banning cheat users and having to deal with them "regretting" in ban appeals. We are also OK to restrict reporting cheaters as our focus shifts to breaking the cheats, and to get the required information to break one, we have our own methods and channels so much that we don't need any sort of reports. Due to the state of anticheat and heuristics, we always have a good picture of abnormalities and what cheats are doing, so the main limiting factor is manpower to get to work with what we have & know. Enjoy the game, and remember that player desires make the market for servers - so if you see too many cheaters, ask server owners to invest their time in training server admins to be on the lookout for cheaters and ban them, script protection/alert systems, and after all, have some peace of mind because cheating in MTA will always be a raised border and still won't be as common as in directly competing projects. // Note: using the bug bounty program for security bugs remains possible, end user security will always be among MTA team's top priorities. The program has been frozen for cheats, though, and documentation will soon reflect that.
    20 points
  28. A simple script of dressable characters and deformable faces. You can move every vertex of the head with a simple displacement shader. The script is in test state right now, I'll create a new editor later. Hope you like it.
    20 points
  29. Lua tutorial for absolute beginners This tutorial can also be viewed on GitHub This tutorial aims to teach the Lua scripting language to those with 0 previous experience with programming / scripting. This guide will start with explaining some Lua concepts, and will later on move to explaining MTA:SA specific concepts. Table of contents: Lua Scripts Variables Data types Operators If statements Functions Return values scopes & locals For loops Tables Iterators (pairs/ipairs) Callbacks Anonymous functions MTA Server & Resources Server vs client MTA functions & wiki Elements (userdata) Command handlers Event handlers predefined globals server <-> client communication Now what? Lua This part of the tutorial discusses Lua itself. No MTA-specific concepts will be discussed here. Scripts The Lua scripting language is a language which is interpreted by a "Lua interpreter". MTA:SA's resources use such an interpreter to run Lua code. For the beginning of this tutorial you can use the online Lua interpreter available on https://www.Lua.org/demo.html. Any code in the Lua part of the tutorial can be run on this website. Lua is written in "plain text". This means it exists of regular characters like any other text you are writing. To edit Lua files you will require a text editor. You could use Notepad, but there are many far better alternatives. My personal favourite is Visual Studio Code, but there are many other good options, to name a few: Atom, sublime text, notepad++ Lua files are usually saved with the .Lua file extension Variables The first concept we're going to discuss is variables. Variables allow you to store a value in your code. For example: x = 10 print(x) print(x) will output the value of the x variable. We will get into what exactly print is later in the tutorial. Variables can have any name you want, as long as you follow some specific rules. variable names must start with a letter (lower or upper case), or an underscore (_) variable names may contain letters (lower and upper case), numbers and underscores. x = 10 y = 20 z = 30 print(x) print(y) print(z) The convention in Lua is to name your variables in "camelCase". This means if a variable exists of multiple words you start every word with a capital letter, except for the first one. camelCaseVariable = 5 Data types So far we've seen variables used to store numeric values, but there are many different types of data Lua can handle. These are: number Any numeric value string A piece of text, a string is surrounded by " or '. For example "Hello world" or 'Hello world' boolean A boolean is a data type that has only 2 options, true and false. nil nil is a value indicating nothing. It's the absence of a value. (Not the be confused with 0) table Tables will be discussed later in the tutorial userdata Userdata will be discussed later in the tutorial function Functions will be discussed later in the tutorial thread Threads are out of scope for this tutorial and won't be discussed So we can use these different data types, and store them in variables: numberVariable = 10 stringVariable = "Hello world" booleanVariable = true nilVariable = nil Operators Operators are symbols in Lua which can be used to do "things" with variables. Here's a list of operators and an example for each: + operator Adds two values together x = 10 + 10 print(x) y = 20 print(y) z = x + y print(z) - operator Subtracts a value from another value x = 10 - 10 print(x) * operator Multiplies two values x = 10 * 10 print(x) / operator Divides a value by another value x = 10 / 10 print(x) % operator This is the "modulo" operator. This will divide a value by another, and return the leftover. x = 10 % 4 print(x) The result of this is 2 and operator The and operator will return true if both variables are "truthy". Otherwise it returns false (A "truthy" value is anything except for false and nil) x = true and false print(x) y = true and true print(y) or operator The and operator will return true if one of the variables are "truthy". Otherwise it returns false x = true or false print(x) y = false or false print(y) == operator The == (equals) operator will return true if both of the variables are the same. Otherwise it returns false x = "hey there" == "hello there" print(x) y = 150 == 150 print(y) ~= operator The ~= (does not equal) operator will return true if both variables are not the same. Otherwise it returns false x = "hey there" ~= "hello there" print(x) y = 150 ~= 150 print(y) > operator The > (greater than) operator will return true if the first value is greater than the second value. Otherwise it returns false x = 10 > 5 print(x) y = 10 > 15 print(y) y = 10 > 10 print(y) >= operator The >= (greater than or equals) operator will return true if the first value is greater than, or equal to, the second value. Otherwise it returns false x = 10 > 5 print(x) y = 10 > 15 print(y) y = 10 > 10 print(y) < operator The < (less than) operator will return true if the first value is less than the second value. Otherwise it returns false x = 10 < 5 print(x) y = 10 < 15 print(y) y = 10 < 10 print(y) <= operator The <= (less than or equals) operator will return true if the first value is less than, or equal to, the second value. Otherwise it returns false x = 10 < 5 print(x) y = 10 < 15 print(y) y = 10 < 10 print(y) .. operator The .. (string concatanation) operator allows you to add two strings together. x = "Hello" z = "World!" combined = x .. " " .. z print(combined) If statements An if statement allows your code to decide to do something, or not. Depending on a value. Often times if statements are used in combination with some of the above operators. An if statement is written as : if <expression> then <code> end x = 10 if x > 5 then print("X is higher than 5") end Any code between then and end will only be executed when the expression is true. You might also have noticed that the code between the then and end is moved over a bit to the right. This is called "indentation". Whenever we open a new scope (scopes will be discussed later in the tutorial) we move our code to the right. This is usually done by either a tab or several spaces . Many code editors will convert a tab to spaces. Else Within an if statement, you can also add an else block. The code in such a block will be executed when the code in the if block is not executed. x = 10 if x > 5 then print("X is higher than 5") else print("X is not higher than 5") end Elseif If you want to do multiple if statements, you can use an elseif: x = 15 if x > 10 then print("X is higher than 10") end if x > 5 then print("X is higher than 5") end x = 15 if x > 10 then print("X is higher than 10") elseif x > 5 then print("X is higher than 5") end The difference between the first example and the second is that if x is higher than 10 in the first example both lines "X is higher than 10" and "X is higher than 5" will be output. Whilst in the second example only "X is higher than 10" will be output. And if statement must always start with an if, can contain multiple elseifs, and may only have one else. name = "NanoBob" if name == "NanoBob" then print("Hello world!") elseif name == "Brophy" then print("Black 123") elseif name == "Tombaa" then print("Stupid") else print("I have no idea") end Functions Functions allow you to write less code, by reusing pieces of code. The syntax to create a function is function <name>(<parameters>) <code> end function foo() print("Hello world #1") print("Hello world #2") end In order to execute code in the function, you "call" the function. You do this by writing the function name followed by (). function foo() print("Hello world #1") print("Hello world #2") end foo() foo() foo() Functions also allow you to send a variable to the function, for it to do something with. This is what's called a function parameter. Function parameters are defined in the brackets () after the function name. function foo(x) print(x) end foo(10) foo("50") You may notice that this looks a lot like the print() we have been using. This is because print is a built-in Lua function. Return values A function not only can execute code, it can also give something back to where it was called. This is called a return value. In order to return something from a function you use the return keyword. function foo() return 10 end x = foo() print(x) print(foo()) Just like in an if statement, all code within a function is indented. Now let's combine everything we have learnt so far: function foo(x) if x > 10 then return "X is higher than 10" elseif x > 5 then return "X is higher than 5" else return "X is not higher than 5" end end y = foo(15) print(y) print(foo(10)) print(foo(0)) Scopes & locals We quickly encountered scopes before, and said we indent our code whenever we enter a new scope. But scopes allow you to do more than that. Most importantly, "local" variables. A local variable is only available in the scope it was defined in (or scopes that were created from within that scope) You can create a new scope using a do block (functions and if statements also have their own scope). do local x = 5 print(x) end print(x) do local x = 5 do local y = 10 print(x) print(y) end print(y) end For loops (For) loops are ways in scripting / programming to have code executed multiple times, without having to write the same thing multiple times. An example of such a loop: for i = 1, 10 do print(i) end The first part : i = 1, 10 defines a variable called i. Which start at 1. This will be incremented by 1, until it reaches 10. The code within the loop then can use this variable. You can also increment with a different number than 1 (including negative numbers) using this construct. for i = 20, 0, -2 do print(i) end This code sample will start with i at 20, and keep adding -2 (thus subtracting 2), until it reaches 0 Tables Tables are a datatype in Lua which allows for lists of things. Here's an example: x = { [1] = 100, [2] = 200, [3] = 300 } print(x[1]) print(x[2]) print(x[3]) Tables consist of key/value pairs. In the example above the key 1, has the value 100, 2 has the value 200, and 3 has the value 300. You can get the value in a table, by putting the key in between square brackets []. Like in print(x[1]). x = { 100, 200, 300 } print(x[1]) print(x[2]) print(x[3]) You can choose to not include the keys in a table. Doing so will automatically add numbers as keys, starting at 1. So the above example would be the exact same as the first example. Table keys and values can be of any data type, including other tables. This allows you to create (very) complex table structures. t = { [1] = { 100, 200, 300 }, ["x"] = 100, [true] = "something" } print(t["x"]) print(t[true]) print(t[1][1]) print(t[1][2]) print(t[1][3]) When using a string as the key in a table, you can leave out the square brackets and the quotes. This goes for both when defining the table, and for indexing it (getting a value from it). For example t = { x = 100, y = 200, z = 300 } print(t.x) print(t.y) print(t.z) A table's values can be modified / set after creating the table as well. t = {} t[1] = 10 t[2] = 20 t[3] = 30 t["x"] = "banana" t[true] = false t.x = "banana" When using tables you will often want to add something to the "end" of a table. This is most common when you are using tables with numeric keys. In order to do this you can use a # to get the amount of items currently in the table. t = { 10, 20, 30 } t[#t + 1] = 40 This will store the value 40 on the key 4 , because #t is 3. Iterators (pairs/ipairs) Iterators are a mechanism that allow you to make a loop, which goes over a set of values. Writing your own iterators won't be discussed in this tutorial. But there are two functions which are often used to create an iterator to iterate over a table. These are pairs and ipairs. t = { 10, 20, 30, 40, 50 } for key, value in ipairs(t) do print(key, value) end The difference between pairs and ipairs is the order in which the key/value pairs are iterated over, and which of the key/value pairs are iterated over. Where ipairs will always use numeric keys, starting at 1, and going up by 1 every time, until there is no entry in the table. This also means it won't iterate over anything key that is not numeric. t = { ["x"] = 5, [1] = 10, [2] = 20, [3] = 30, [5] = 50, } for key, value in ipairs(t) do print(key, value) end A pairs loop will iterate over any value in a table, but the order is not guaranteed. Meaning that between different runs of the script the order could be different. t = { ["x"] = 5, [1] = 10, [2] = 20, [3] = 30, [5] = 50, } for key, value in pairs(t) do print(key, value) end Callbacks Callbacks are when you pass a function as an argument to another function. To have the function you passed be called later on. This is used often within MTA. An example of a Lua function which uses a callback is table.sort. table.sort will sort a tables values, by default these values are sorted numerically. But you can use a callback to change this behaviour. values = { 5, 4, 3, 6, 8, 1, 2, 9, 7 } function sortFunction(a, b) return b > a end function reverseSortFunction(a, b) return a > b end table.sort(values, sortFunction) print("Sorted: ") for _, v in ipairs(values) do print(v) end table.sort(values, reverseSortFunction) print("\nReverse sorted: ") for _, v in ipairs(values) do print(v) end In the first call to table.sort (table.sort(values, sortFunction)) you can see the sortFunction function is passed as second argument to the function. Note that we don't write sortFunction() here (notice the brackets difference) because that would call the sortFunction function, and pass its return value to table.sort. table.sort will then call this function when it compares two different values, this function should return true or false depending on whether its second argument (b in this case) is larger than it's first argument (a), in the context of sorting. Anonymous functions It is also possible to use an "anonymous function" when passing a callback to a function. values = { 5, 4, 3, 6, 8, 1, 2, 9, 7 } table.sort(values, function(a, b) return b > a end) print("Sorted: ") for _, v in ipairs(values) do print(v) end table.sort(values, function(a, b) return a > b end) print("\nReverse sorted: ") for _, v in ipairs(values) do print(v) end MTA This part of the tutorial discusses MTA specific constructs. Code in this part of the tutorial won't run in the online Lua interpreter. You will need to set up a (local) server for this. Server & Resources By default when installing MTA:SA a server is installed as well. This server is located in the "server" directory of your MTA directory. This is usually at C:\Program Files (x86)\MTA San Andreas 1.5\server. This directory contains an MTA server.exe file, running this file will start a server. Scripts on a server are grouped by resources, a single resource can consist of multiple script files and other assets such as images, sounds, fonts, mods and more. Resources are placed in your mods\deathmatch\resources folder in your server folder. A resource is always in its own directory. A resource must always have a single meta.xml file. This file tells the server (among others) what script files to load. A typical meta.xml file looks like this: <meta> <script src="vehicleSystem.Lua" type="server"/> <script src="vehicleMods.Lua" type="client"/> </meta> You will need an entry for every .Lua file you want to have executed on the server. You can start a resource by typing start <resource name> in the server console (the window that opened when you started MTA Server.exe). The resource name is the name of the directory your meta.xml is in. (This may not have spaces). Starting a resource will start running the Lua scripts, if you've changed your scripts you will need to restart the resource for the changes to take effect. (restart <resource name>). Server vs client Lua code can be executed in one of two places. The server, or the client. Server sided scripts are executed on the actual machine that is running the MTA server.exe process. Client sided scripts are executed on the computer of every player that connects to your server. Server sided and client sided scripts have a distinct difference in responsibility and possibility. Some functions for example are only available on the client, whilst others are available only on the server (and many on both). Note: Some of these functions which are available both server sided and client sided are different on server and client MTA functions & wiki In plain Lua there's not much you can do to affect a game engine like MTA:SA. This is why MTA:SA offers a (large) list of functions available for you to use in your scripts which interact with the actual GTA world. You can find a list of all of these, what they do and how to use them on the MTA wiki. Server sided functions Client sided functions shared functions An example of such a function is createObject(). This function will create a physical object in the game. The wiki page contains information on how to use it (what arguments it expects, and in what order). And often shows an example of how to use it. createObject(1337, 0, 0, 3) Elements (userdata) At the start of this tutorial we quickly mentioned userdata data types. These are data types configurable by the implementation of Lua. In this case, MTA. MTA uses userdata to represent "elements". Many things in MTA are elements, like objects, markers, peds, players, user interfaces, vehicles, etc. On the MTA wiki you will notice many functions either return elements, or require an element as arguments. A list of different types of elements can be found on the MTA wiki. Elements also have a hierarchical structure to them. Elements can have a "parent", and multiple "children". This will result in a tree of elements, the element at the top of this tree (and thus the grandparent of all elements) is called the root element. Command handlers Often times in MTA you want certain things to happen when a player enters a command. This is done using command handlers, command handlers use a callback, which we previously discussed. The wiki contains a page for the addCommandHandler() function. For this example we will be using the server side version. function handler(player, command, argument) outputChatBox("You entered " .. command) if argument ~= nil then outputChatBox("You used the argument " .. argument, player) end end addCommandHandler("banana", handler) This example also uses the outputChatBox() function, this will output a piece of text to the chat.(in this case, only for the player who executed the command) The callback function passed to addCommandHandler will be called every time a player uses the /banana command ingame. Event handlers Besides having your script do things when a user executes a command you likely want the game to respond to many different types of things that happen in the game. Like players taking damage, coming close to something, etc. These things are called events. Whenever an event is triggered you can run a piece of Lua code. You do this using event handlers. Event handlers are created using the addEventHandler(). The first argument to the addEventHandler() function is the string name of the event. These can be found on the MTA wiki as well. Server sided events Client sided events An event is always triggered for a specific element, for example "onPlayerWasted" is triggered on the player that was wasted (killed). You can attach an event handler to a single element to only have your callback function be called when the event is triggered on that specific element. But you could also use the root element here and your function will be called for every element the event is triggered on. function handlePlayerDeath() outputChatBox("You died!!", source) end addEventHandler("onPlayerWasted", getRootElement(), handlePlayerDeath) The getRootElement() function used in this example returns the root element discussed earlier. You can also see source is used in this code snippet, we'll talk about that some more in the next section. predefined globals MTA has some predifined global variables for you to use in your script. A list of them can be found on the wiki. Here's a couple notable ones and what they're used for root The root element, same as the return value of getRootElement()) source The element an event handler was called on. An event's wiki page always describes what the event source will be for the event. localPlayer The player element for the player whose client the script is running on. (Thus only available client sided) client Will be discussed in the next section server <-> client communication As stated earlier in this tutorial scripts can run either on the server, or one of the connected clients. However often times you would want to trigger something on the server from a client, or the other way around. An example of this would be when the user clicks the login button on a GUI (Graphical user interface) the server should try to log that person in, and send him back whether or not this was successful. This can be done using events. MTA allows you to create and trigger your own events, and these events can be triggered from server to client (and the other way around). You can do this using the addEvent() function. Once an event has been added (and marked as remotely triggerable by passing true as second argument to addEvent()) you can call it from server/client. You do this using [triggerClientEvent()]https://wiki.multitheftauto.com/wiki/TriggerClientEvent() and triggerServerEvent() respectively. Server sided: function handlePlayerLogin(username, password) outputChatBox("You tried to log in with the username " .. username, client) end addEvent("LuaTutorial.Login", true) addEventHandler("LuaTutorial.Login", root, handlePlayerLogin) Client sided: function pretendLogin() triggerServerEvent("LuaTutorial.Login", localPlayer, "username", "password") end pretendLogin() This example will trigger the "LuaTutorial.Login" event from the client sided script. And passes the "username" and "password" arguments to the event. The server then handles this event in the handlePlayerLogin() function, which in our case just outputs something to the chatbox. In this example you can see the previously mentioned client global variable. This variable is set to the player element corresponding to the client the event was triggered from. (And is thus only usable when used in an event handler which has been triggered from a client). Now what? With this information you should be able to start scripting, and making things in MTA! If you didn't understand it all in one go, or you have any more questions there is no shame in that! You can find myself and many others willing to help you with your scripting questions in the #scripting channel on the MTA discord. Another good source for programming / scripting related questions is stack overflow.
    20 points
  30. Hey, i reworked mta community webpage. I apologize in advance for my bad english Russia power!
    20 points
  31. السلام عليكم ورحمة الله وبركاته أقدم لكم اليوم أخر مشاريعي وأفضلها بالنسبة لي وأصعبها, حيث استغرق مني هذا العمل الضخم 20 يوم و 1600 سطر وهو عبارة عن لوحة أدمنية خارجية تمكنك من التحكم بالسيرفر بدون تشغيل اللعبة والدخول للسيرفر, وبالنسبة لي سيكون مفيد جداً وأسرع C# - LUA : لغات البرمجة : مقطع توضيحي للبرنامج : ملاحظات أولاً : لا تغير اسم السكربت ولا ما راح يشتغل البرنامج ثانياً : السكربت يحتاج صلاحيات ادمن ثالثاً : للتعديل على القروبات أو الصلاحيات راجع ملف الميتا التحميل : اضغط هنا للتبليغ عن الأخطاء أو الاقتراحات أو المشاكل تفضل بالأسفل أو الرسائل الخاصة مع تحياتي لكم
    20 points
  32. Hi there. Oh, what is that? The holidays are here again? Yep, it looks like they are, so that means the usual stuff. We are going to give you guys & gals a heads up on what has been happening in MTA's world this whole year. And if you are one of those well informed types who does not need a recap, you still might want to give this post a read, as there will be more than that later on! 2016 in Recap Near the end of January, we released a bugfix release for MTA:SA 1.5.x - Multi Theft Auto: San Andreas 1.5.2. Among a few other things, that version had and improved the server app compatibility for Linux server hosters and fixed some desync issues. In July, we started offering a new way of promotion for server owners who wanted to gain more players quickly. Namely, one of the top positions in the ingame server browser for a week in an exchange for a small fee. We felt it was a good way to not only ensure that our Project's financial needs are balanced, but also to allow some smaller but ambitious servers to try and get the player base they were always seeking for. In August and September, we made significant changes to our forums, including a switch to a new forum software. There were a bunch of issues found afterwards (such as keeping the users login states), but we managed to fix most of them. Following that, we were featured in an article on the Rock Paper Shotgun, which was pondering the popularity of multiplayer mods for GTASA, even long after its original release. You can find the full article on the RPS website. And finally, on 20th of October, Multi Theft Auto: San Andreas 1.5.3 was released. This was a large release that could as well have been labelled as a next major release, but was not as it was still compatible with the 1.5 series. A bunch of interesting MTA:SA-related YouTube videos from this year Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 27111 players 2016.12.23 (at 17.30 GMT) Highest recorded number of concurrent unique players 27111 players 2016.12.23 (at 17.30 GMT) Recent number of daily unique players 124981 players 2016.12.23 (Friday) Highest recorded number of daily unique players 142785 players 2016.09.04 (Sunday) Recent number of monthly unique players 554757 players November, 2016 Highest recorded number of monthly unique players 626167 players August, 2016 Yes, to our surprise, there was a new concurrent unique player count record set literally on the day we were gathering these stats for you. MTA:SA Version or series Percentage of players using that version or series as of 23rd of December, 2016 1.5.3 95.20% 1.5.2 1.5.1 1.5 3.60% 0.09% 0.09% 1.4.x 0.67% 1.3.x 0.28% 1.0.x + 1.1.x + 1.2.x 0.07% It looks like more people decided to use newer versions of the mod than the last year. *** As for the future, we have been working on the next release, which will contain mostly bugfixes and compatibility tweaks. However, we did some work on new features as well, such as Custom Train Tracks, which we hope to be finished soon. We also want to look into improving streaming, raising the limits and making it possible to add new IDs for things, but this will be tricky. Nonetheless, it would be great to see those features working in MTA:SA one day as, for example, they would allow server owners to use bigger and better custom maps with new vehicles working correctly for all players. That's it for now. Happy Holidays and Best Wishes for 2017 from the MTA Team!
    20 points
  33. Hello everyone! Winter is just around the corner, and so is the Holiday Season. Would it not be great if you could start them with a fresh "A Year in Recap" post to read, just like the usual? And surprise, surprise - we have you covered! We have prepared a brief summary of the past year with all the important stuff that happened in 2023 from an MTA fan's perspective. And there is more than just that, so be sure to read the entire post! Screenshots were courtesy of Nebla. 2023 in Recap There were a few important highlights for us this year. At the very beginning of the year, we had unbanned (almost) everyone who had ever received a global MTA ban. A risky move, you might have thought? As it turned out, we were actually quite pleased in how it fared in the end. Next, we had celebrated Multi Theft Auto's 20th Anniversary on 9th of February. Aside from the lengthy feature post with some media, many of our community members also shared their memories with MTA in the celebratory forum post. You all are also welcome to chip in and post your experiences there. Few days after that, I interviewed IJs - Multi Theft Auto's founder - about his experiences with the project. Feel free to check it out if you have not done so already, as it also featured screenshots from our other projects. One day in April, we had encountered minor disturbances with our perception, but all is fine now. Yllufepoh... Later on, we had opened a beta testing phase for our next major release. After the testing was over, we had released Multi Theft Auto: San Andreas 1.6 in June. This is still our current stable release, which works best on Windows 10 and Windows 11 operating systems. It is not just us who had their anniversaries - SAES, a long-time MTA clan/gang were also celebrating the 20th Anniversary of their community. We are happy to see such long-time communities that have been around for almost as long as MTA itself, and we will be always looking forward to give them the spotlight. This year had also seen some developments regarding the next game in the Grand Theft Auto series. Rockstar Games was celebrating the 25th anniversary of the creation of their studio, for which they published the first trailer for Grand Theft Auto VI in December. The game is planned to launch in 2025 on PlayStation and XBox platforms. The PC version was not announced at this time, but it is possible that it will come out some time after console releases as usual. We also had some developments of our own. We had improved the Discord integration with MTA:SA client - this was made available for testing in our nightly builds. And recently, we have started featuring your media on our social media outlets, as a part of our Community Spotlights program. Want to be featured too? See one of the announcements on our Discord. A bunch of interesting MTA:SA-related YouTube videos from this year Current player counts and version fragmentation statistics Type Amount of players Date / Time Recent peak number of concurrent unique players 32,611 players 2023.12.10 (at 18.43 GMT) Highest recorded number of concurrent unique players 52,098 players 2020.04.02 (at 18.00 GMT) Recent number of daily unique players 119,707 players 2023.12.03 (Sunday) Highest recorded number of daily unique players 185,818 players 2018.02.03 (Saturday) Recent number of monthly unique players 552,402 players November, 2023 Highest recorded number of monthly unique players 805,903 players January, 2018 The numbers are lower than in the last year, but there are still many MTA players out there. According to Steam Statistics, the number of players is more or less similar to games like PayDay 2, ARK: Survival Evolved or Garry's Mod. MTA:SA version or series Percentage of players using that version or series as of 23rd of December, 2023 1.6.0 96.5% 1.5.9 2.8% 1.5.8 0.1% 1.5.7 (and older) 0.5% 1.4.x + 1.3.x 0.1% Also as of 23rd of December, 2023: 76,250 members have joined our Discord server, we have got 13,826 followers on X/Twitter, 58k users follow our Facebook fanpage, and our Steam Community group has 43,115 members. Status update Not much to report at the moment. Projects like ours depend on the volunteer work and community contributions, so things can get slower at times. We are always looking for new staff members for the project, be it developers, moderators, content creators or managers. If you would like to contribute or test your skills, feel free to reach out to us on our Discord or via forum PMs. We have a bunch of things kept on our backlogs too, so we might consider re-visiting them in the upcoming year. --- We hope that you all will enjoy the Holiday Season and wish you all the best in 2024! -- MTA Team Credits for the content submissions: Dutchman101, Haxardous, Nebla, xLive.
    19 points
  34. I remember my own first encounter with the mod. It was also back in 2003, although few months later in the summer. MTA:VC 0.2 was a hot thing back then and I had just learned about it from a gaming magazine. Sure enough, it picked up my interest, but I was only able to play it myself later, at an internet café. While being limited, it was also impressive - I have found the freedom of the gameplay fascinating. You could do whatever you wanted ingame, and so could other players. You could play along with others, or try mowing them all down with your guns. You could get in a car, drive around and watch the mayhem from afar, or challenge other players to see, who is the best driver. Got ran over by another player? Just respawn and hunt them down, or ask your friends to get ingame and get your revenge together. And it all had that cool GTA wackiness and style that I loved. My VCP recruitment fight with Ransom! January, 2004. I sticked around and kept playing. Few months later, I was spotted by Ransom, who recruited me to my first MTA clan - VCP (Vice City Police). It did not end there - I have had a chance to participate in the MTA 0.5 beta tests, then got invited to the newly-formed dedicated QA Team for MTA:SA, led by l2ebel. From there, I worked my way and got to co-lead the QA Team. I also became the MTA Moderator later on and held various roles in the project over the years. This experience has actually landed me a career in Software Testing, which is still my occupation. Yet, nearly 20 years later from back when I started, I am still here, preparing this article for you. I could go on and on, but this was just my story - each of you have an MTA story of your own. Multi Theft Auto is made of such stories, and of course made by the people who starred in them.
    19 points
  35. Today i proudly present to you: OSWS (OpenSourceWaterShader) for MTA: San Andreas! What is this? This resource is a project that i started long ago in order to finally (!) get a decent water shader working for MTA that benefits everybody. The main goal is to get an amazing shader where everyone should contribute to make it the very best looking water that we can get for this game engine. The code is pretty well optimized and the performance should be good for everyone, but a shader model 3.0 graphics card is REQUIRED for this resource! The effect is applied to the water texture itself. It is NOT a post-processing water shader. This means that we do not have to deal with any issues that come with post-processing, for example smoke and any other effect that is rendering behind the drawn water. The downside of this method is the fact that we can not (as far as i know) add refraction to the stuff that is below the water surface. But maybe some genius knows a way to make it happen, or fix the rendering issues of post-processed water. Stuff like that is the main reason why i decided to make this resource a community project, improvements for everyone! Features: Water reflections, surface refraction: Shore fading, shore foam: Dynamic_sky support with sun + moon specular lighting: DOWNLOAD: https://community.multitheftauto.com/index.php?p=resources&s=details&id=18239 DOWNLOAD DYNAMIC_SKY RESOURCE BY @Ren_712: https://community.multitheftauto.com/index.php?p=resources&s=details&id=6828
    19 points
  36. Hello, We, the eXo-Reallife team, would like to release a module that is also used on our server. It is a pathfinding module developed by Jusonex and StiviK. The module uses the A * algorithm. (https://en.wikipedia.org/wiki/A*_search_algorithm) We use this for our GPS: Why did we develop a module for this and did not simply write a script? This has a very simple reason. The module calculates the routes in your own threads, which has the advantage that it is much faster than a script, and secondly, you can calculate how much routes as you want side by side. This will not cause any lags etc.! What are the features of the module? The module can load several graphs / nodes side by side The module calculates the routes in its own threads Very useful API functions (such as findNodeAt or getNodeNeighbors) What are the main features? int loadPathGraph (String pathToGraphFile) This function loads the graph from the given file and returns a GraphId which you need for all other functions. If something does not work, false is returned. bool findShortestPathBetween (int graphId, float startX, float startY, float startZ, float endX, float endY, float endZ, function callback) This function finds the shortest route between the points. (Unfortunately, no vectors can be handed over!) The callback function is called when the calculation is finished. As an argument, either a table is returned that contains all nodes, or false if no route is found. bool unloadPathGraph (int graphId) You can use this function if you no longer need and want to unload the graph, it returns true if everything is fine, false if an error has occurred. You will find all the other functions that are included in our documentation. Why is the eXo team releasing all this? Well, that has the simple reason, we want to share our work with others and not just keep it for us! We hope we can enrich you with it and vlt. Even help! Where can I download the module? The whole module is open-source and can be viewed in our GitHub organization. It's released under the MIT License. GitHub organization: https://github.com/eXo-MTA Repository: https://github.com/eXo-MTA/ml_pathfind Download the module (Windows / Linux): https://github.com/eXo-MTA/ml_pathfind/releases Nodes of all roads in SA: https://github.com/eXo-MTA/ml_pathfind/blob/master/test/sa_nodes.json If you find any mistakes or suggestions, you can simply create a new issue and we will look into it. So now that's it, have fun with the module! - StiviK and the eXo-Reallife team (Original thread in German: https://www.mta-sa.org/thread/36365-release-mta-sa-pathfinding-module/?postID=407938#post407938)
    19 points
  37. Hello, We recently discovered a vulnerability within MTA Server, as a result of which an attacker could crash your server. The issue has been fixed and we urge all server owners and hosters to update immediately. Getting the update Linux: https://linux.multitheftauto.com/ Windows x64: https://nightly.multitheftauto.com/?mtasa_x64-1.5-rc-latest If your server is hosted locally (out of your MTA installation folder), reinstall with the full installer from https://multitheftauto.com/ for the x86 server
    18 points
  38. Presented By (Previously J Series) With more than 3 years of work I decided to publicly release my map conversions, I had dropped my previous listings due to some "Issues" however, they're back. ---------------------------------------------------------------------------------------------- Download Streaming Quality - 8/10 Get's the job done, awesome all around, but some places are better than others ---------------------------------------------------------------------------------------------- Download Streaming Quality 7/10 Beats VC in other places, very poor in others; as well as a huge FPS drop in the first island (Issues are rockstars fault) ---------------------------------------------------------------------------------------------- Download Streaming Quality 9/10 Beats both VC and LC ---------------------------------------------------------------------------------------------- Vehicle testing gridmap Download Streaming Quality 10/10 Perfecto ---------------------------------------------------------------------------------------------- Download Streaming Quality 7/10 Decent all around Might be a tad laggy due to the high poly and Russian nature of this map Extremely detailed for a user created map ------------------------------------------------- Download (Coming soon) streaming quality 10/10 Very light weight ------------------------------------------------- MTA-Stream MTA-Stream a new lightweight streamer promising near instant load times and better streaming Post any bugs here Or here Questions or discussions can be either posted in this topic or here --- If you would like to support my work, please donate encourages me to make good updates. https://www.paypal.me/BlueJayL
    18 points
  39. Slipe is an open source framework that enables anyone to write scripts for MTA:San Andreas in C# instead of Lua, wrapping all MTA elements and classes and including some .NET Core namespaces. It is based on CSharp.Lua by Yang Huan. Slipe features: Runs on Windows and Linux Built in continuous deployment support with (GitHub) webhooks Object oriented wrappers for all MTA elements Async/await for MTA functions that use callbacks C# style Http requests, sockets and XML methods. Use Visual Studio and its Intellisense Type safety You can find more information about the project on https://prod.mta-slipe.com. Our Discord Our Github The project is still in Alpha, and since it is open source anyone is welcome to contribute
    18 points
  40. السلام عليكم ورحمة الله وبركاته اليوم رجعتلكم بمود لسيرفرات الزومبي والي هو مود ال hud المود كما هو قدامكم خصائص جديدة : - معرفة البنق والفبس - معرفة الوقت الحقيقي - لوق فلوس - قولد تحت الفلوس عن طريق داتا الي انت تحددها - لما تعشق السلاح يكتبلك Reloading - نجوم جديدة مكان القديمة - شريط الدم يكون علي حسب الستات حقت الدم حقتك يعني لو خليت دمك 200 يظبط عليه ____________________________________________ الحين نيجي للأهدائات @*RayaN-Alharbi. @Abdul KariM @Rakan# @#,+( _xiRoc[K]; > @#StrOnG_,) @KhaledAlamri @MR.SAMSUNG @iMr.WiFi..! @سعد الغامدي @iPrestege @#Soking @Default#^ @Ahmed Ly @MR.TOUNSI @Master_MTA @#Mr.Pop @!#NssoR_) @The Killer @N3xT @Abu-Solo @AbU - W6N @MR.Mosa @Mr.Mostafa @#[K]iLLeR<3 @#[K]aTakuRI-,? @TAPL @Sha67 @shwaeki @EH10 @</Mr.Tn6eL> @ALw7sH ______________________________________________________ الان وقت التحميل Hud _______________________________________________________ ويلا مع السلامة
    18 points
  41. Hi there! Our next release is nearly done. However, to ensure that it meets our high quality standards, we would like to ask you guys to thoroughly test it before we release it. This release brings an important change to our release distribution system. Starting today, there will be two builds available for you to download: normal build - only works on Windows 7 and above legacy build - only works on Windows XP and Windows Vista A normal build is basically what we offered with our previous releases, with an exception that it now requires Windows 7 or above to run. The new thing is an legacy build, which only works on Windows XP and Windows Vista. This build uses the last CEF components version that works on XP/Vista, which is now outdated and insecure. To ensure that we will not leave some of our players in the dark, while keeping the rest of them secure, we decided to split the release into two builds. One which uses older CEF components and works on XP/Vista (legacy build), and the other one which has up-to-date CEF but only works on Windows 7 and above (normal build). We have elaborated more on this in a separate post which you can find here. MTA:SA 1.5.3 has a lot of other smaller bug fixes, tweaks and new features included and is a result of another change to our build system, which simplified the development and building process to us. This has also allowed us to back-port many of the smaller changes originally planned for the 1.6 release to 1.5.3. These changes should be compatible with the 1.5 series, but they still need to be tested to ensure that this is indeed the case. And this is where you guys come in. To help us testing the version, simply download the Release Candidate from links below, install it and play as you normally would. If you play on XP or Vista, download the legacy build, otherwise grab the normal one. This version is meant to be fully compatible with MTA:SA 1.5.2 or below, so just join your favourite server and give it a go. If you encounter a problem or spot a bug, you can report them to our bugtracker. Please use the search feature first to see if your problem was not already reported though... Updated Windows/Linux server packages are also available, and similarly, they are also compatible with 1.5.2 clients, so please test whether your servers work fine on 1.5.3 too. Click here to download MTA:SA 1.5.3 RC Normal Build (for Windows 7 and above) Click here to download MTA:SA 1.5.3 RC Legacy Build (Windows XP and Vista only) MTA:SA 1.5.3 RC Linux Server download page You can find the current list of changes for this version here. A summary of changes and credits list will be provided with the final release announcement post. Thank you for helping us make MTA great again awesome. --MTA Team
    18 points
  42. After a worrying discussion on Discord last night regarding password storage and remember me functionality I've decided to write a tutorial on how it should be done. This guide assumes you are not using MTA's built in account system, but a custom one. Any code shown in this tutorial is purely for illustrative purposes, and is not finished code, you should use it as a guideline, not a solution. The following topics will be discussed in this tutorial: How to hash and salt passwords (register) How to validate a hashed password (login) How to add "remember-me" functionality How to offer password recovery How to migrate from an older hashing algorithm, to a newer one Using a password policy (Extra) How to handle database leaks (Extra) What even is hashing and salting? For the purpose of this tutorial we expect a database structure which is somewhat similar to this: How to hash and salt passwords When you have a user register on your service, that user expects of you to keep their password safe. Whilst it is generally bad practice to use the same password for multiple services there are many users that still do so. Because of this it's crucial that you save the user's passwords in a way that an attacker will be unable to find out the original password the user typed. This includes if they have full access to your database. In order to do this we do what is called "Password hashing" When a user registers, your server receives the user's intended username, (email) and password. Before you save that password to the database you have to hash and salt this, luckily MTA has a function that takes care of this. If you wish to know more about what exactly it does, there's more information at the end of this tutorial. In order to hash this password you use the passwordHash function. This function is relatively slow (by design), so it is highly recommended you pass a callback to this function, so your entire script doesn't wait for it to complete. https://wiki.multitheftauto.com/wiki/PasswordHash local mysqlHandle -- we're assuming this value is set somewhere else in code function register(username, email, password) local player = client passwordHash(password, "bcrypt", {}, function(hashedPassword) -- callback function for hashing the password local handle = dbExec(function(handle) -- callback function for storing the user in the database if (handle) then triggerClientEvent(player, "registrationSuccess") -- inform the user that registration was successful else triggerClientEvent(player, "registrationFailed") end end,mysqlHandle, "INSERT INTO users (email, username, password) VALUES (?, ?, ?)", email, username, hashedPassword) end) end addEvent("passwordTutorial:register", true) addEventHandler("passwordTutorial:register", getRootElement(), register) How to validate a hashed password Once you've saved the hashed pasword to your database you need to do a little bit of additional work when authenticating the user. Luckily MTA offers a passwordVerify() function, which is the counterpart of the previously discussed passwordHash(). What this function does it basically hashes the password in the same way, resulting in the same output hash. https://wiki.multitheftauto.com/wiki/passwordVerify In order to get the account the user is trying to log in to you have to do a query for an account which has the user submitted username, and of which the password matches through passwordVerify. PasswordVerify is also a relatively slow function, thus you should use a callback. function login(username, password) local player = client dbQuery(function (handle) -- callback for the query selecting the user by username local results = dbPoll(handle, -1) if (#results == 0) then triggerClientEvent(player, "loginFailed") return end passwordVerify(password, results[1].password, {}, function(matches) -- callback function for the password verify if (matches) then -- Do anything you wish with the database result to log the player in with the rest of your scripts triggerClientEvent(player, "loginSuccess") else triggerClientEvent(player, "loginFailed") end end) end, mysqlHandle, "SELECT * FROM users WHERE username = ?", username) end addEvent("passwordTutorial:login", true) addEventHandler("passwordTutorial:login", getRootElement(), login) How to add "remember me" functionality When users on your server log in, they often do not want to have to enter their username and password every time they want to log in. In order to satisfy this need you can implement a "remember me" function. What I've seen happen in the past, is people would store the user's password (encrypted) on the client. This is NOT safe, and should never be done! In order to properly use remember me functionality what you would do is upon login in, generate a random string. The longer the better. This random string is what we call an access token. You would then allow the user to log in with such an access token, preferably only once generating a new access token each time one is used. To implement this you would generate that token every time the user logs in, whilst they have "remember me" enabled. You will have to save this token in your database alongside your user. For extra security you could also store the user's serial alongside the access token, you can then validate that the access token is being used from the same device. https://wiki.multitheftauto.com/wiki/Filepath function login(username, password) -- This code should be put in the callback to the dbQuery function, but to keep the example clean that's not shown here if (rememberMe) then local token = generateRandomToken() dbExec(function() triggerClientEvent(player, "loginSuccess", token) end,mysqlHandle, "INSERT INTO access_tokens (user_id, token) VALUES (?, ?)", results[1].id, token) end end function rememberMeLogin(username, accessToken) -- this function handles a user's login attempt dbQuery(function(handle) local result = dbPoll(handle, -1) if (#result == 0) then triggerClientEvent(player, "loginFailed") else -- Do anything you wish with the database result to log the player in with the rest of your scripts triggerClientEvent(player, "loginSuccess") end end,mysqlHandle, "SELECT users.* FROM access_tokens JOIN users ON users.id = access_tokens.user_id WHERE users.username = ?", username) end addEvent("passwordTutorial:loginRememberMe", true) addEventHandler("passwordTutorial:loginRememberMe", getRootElement(), login) How to offer password recovery Offering password recovery requires a little bit more than just your MTA server. Generally password recovery is done with emails. So you would need access to an email server / service which you can use to send an email from an HTTP request. (Like you can do with fetchRemote()). When a user requests a password reset, have them enter the email you registered with. You then fetch a user from the database with this email address. You would then store a password recovery token for this user. This token, just like the remember me token, is a random string. Ideally, you would send the user a link with a password reset form that goes to a webpage where the user can reset their password. You could do this with an external service, like a webserver. Or you could use MTA's Resource web access for it, but if you do make sure you handle permissions properly for anything else that uses this. However another option would be to have the user copy paste the generated token from the email into you server's login window. Which of the two solutions you pick is up to you, my personal preference goes to the one with the link in the email. But in either case the server side logic is the same. When the user attempts to perform password recovery, verify that the token they give you belongs to a user, and then change the password to the newly requested password. Make sure you hash this password the same way you do in your login. function requestPasswordRecovery(email) dbQuery(function (handle)) local result = dbPoll(handle, -1) if (#result == 0) then triggerClientEvent(player, "passwordTutorial:passwordRecoveryRequestFailed") else local token = generateRandomToken() dbExec(mysqlHandle, "UPDATE user_data SET recovery_token = ?", token) -- mail the token to the user, mail implementation depends on the mail server/service you use triggerClientEvent(player, "passwordTutorial:passwordRecoveryRequestSuccess") end end, mysqlHandle, "SELECT * FROM users WHERE email = ?", email) end function recoverPassword(recoveryToken, password) dbQuery(function (handle) local result = dbPoll(handle, -1) if (#result == 0) then -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoveryFailed") else passwordHash(password, "bcrypt", {}, function(hashedPassword) -- callback function for hashing the password local handle = dbExec(function(handle) -- callback function for storing the new password in the database if (handle) then -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoverySuccess") -- inform the user that registration was successful else -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoveryFailed") end end,mysqlHandle, "UPDATE user_data SET password = ? WHERE recovery_token = ?", username, recoveryToken) end) end end, "SELECT * FROM users WHERE recovery_token = ?", recoveryToken) end Besides changing the password, it's important you also delete any access tokens that user might have if you're using remember me functionality. It is also good practice to make recovery tokens expiry after a certain amount of times, and not allow a recovery token to be created whilst one is already in prgoress. This prevents a user from sending a large number of emails from your service. How to migrate from an older hashing algorithm, to a newer one Maybe after reading this topic you realise that your password security is not what it should be. So you want to change your old password hashing / validation logic to the ones explained in this topic. And due to the nature that hashes can not be "unhashed", you can't simply migrate your passwords over. So in order to migrate the passwords what you have to do is when a user logs in, first validate their password with the old hashing algorithm. If this matches, then hash (and salt) it with your new hashing algorithm and save it in your database. Make sure to delete the old password otherwise your password security is not any better than before. Using a password policy Passwords policies are important to prevent your users from picking a password that is too easily cracked / brute forced. Many password policies come in the form of "Must have at least one capital letter, one digit and one number". But that discards that fact that the best way to make your password more difficult to crack, is making your password longer. So in the code snippet below is a function that measures the 'search space' of a password. The search space of a password is the amount of possible passwords there are with a certain combination of characters. In order to use this, you would have to set a minimum password search space when a user registers for an account. This minimum is up for you to set, but be reasonable, you shouldn't expect a user's password to be impossible to remember / create. I recomend playing with the function a bit to see what values you get out of it, and pick something you believe is sensible. function getPasswordSearchSpace(password) local lowerCase = password:find("%l") and 26 or 0 local upperCase = password:find("%u") and 26 or 0 local digits = password:find("%d") and 10 or 0 local symbols = password:find("%W") and 32 or 0 local length = password:len() return (lowerCase + upperCase + digits + symbols) ^ length end -- The below function calls are to indicate the difference in search space for a set of passwords print(getPasswordSearchSpace("a")) print(getPasswordSearchSpace("abc")) print(getPasswordSearchSpace("Abc")) print(getPasswordSearchSpace("Ab!")) print(getPasswordSearchSpace("Ab!0")) print(getPasswordSearchSpace("Mu#9A0h.")) print(getPasswordSearchSpace("This is a demonstration of how easy an incredibly strong password is to remember")) How to handle database leaks If you have reason to believe that your database has been leaked or otherwise compromised, it is important that your first course of action is removing any access tokens stored in your database. Once you have done that you have to inform your users. Whilst when properly hashed and salted it's extremely difficult / time consuming to find out a user's password it is still a possibilty. So you should inform your users of the breach, tell them that their passwords were properly hashed, and they do not need to fear for their passwords immediately. However you should suggest to your users that they change their password either way, just in case. What even is hashing and salting? Hashing has been brought up several times in this tutorial, whilst you do not need to know what it is / does, you might be interested in knowing regardless. I won't be going too far in depth as I simply do not have the knowledge, but the basic idea of hashing is this: When you hash anything, you turn it into a string of characters (or other value) that has no relation to the original input, other than when you hash the original input again, it will always generate the same hash. For example, when you hash the stirng 'banana' using the sha512 hashing algorithm, it will always yield the output: "F8E3183D38E6C51889582CB260AB825252F395B4AC8FB0E6B13E9A71F7C10A80D5301E4A949F2783CB0C20205F1D850F87045F4420AD2271C8FD5F0CD8944BE3" Now hashing can not be reverted, you can not "unhash" a hash, so in order to verify someone's password you hash it again, and see if the two hashes are the exact same. Now this is great, passwords are safely stored. However there is still more to do, salting. Salting is adding some random data to your password prior to hashing it. This prevents when two users (on the same service, or on others) have the same password, that their hashes are also the same. Meaning if one password is compromised, the other password is not. It is important that a salt is random for every user in your application, not one salt for your entire application. Now you might think we didn't do any salting in the code / tutorial above. This is not true, we just didn't do it ourselves. MTA's passwordHash function actually hashes the passwords and salts it, this salt is then stored in the output hash it self, just before the actual password hash. In the case of bcrypt it actually stores a little bit more info in the resulting hash, but you need not worry about that.
    17 points
  43. Debugging Do you know what debugging is? You might think you do, but unfortunately (in my opinion) only ~15% of the scripters in the community do know the full definition of it. Many people think that debugging code is the same as looking in to the Debug Console and waiting for warning + errors to show up. That's indeed debugging and yet it never provide all information you need to build your scripts. It only can say what goes wrong at a certain line. With other words, the Debug Console by default will only show a limited amount of mistakes you have made in your code. So what is next? You fixed all warnings and errors and yet it doesn't work. You start with making your code visible! I guess 70% would think: Making code visible? Ehhh how??? Let me write it down a little bit different: By using Debug Information making the behaviour of the code visible. I guess 50% would think: Eh what? behaviour of code????? Let me give you an example. Example: (1) outputDebugString("the script has started") -- < this is a debug line if true then outputDebugString("code works here") -- < this is a debug line else outputDebugString("code shouldn't be working here") -- < this is a debug line end Debug console "the script has started" "code works here" The debug console is NOT information for players, it is information for YOU developers! BTW this is a debug line outputDebugString("test") -- < this is a debug line In this case it is just a piece of code that shows information in the debug console. Example: (2) local playerName1 = "snake1" local playerName2 = "cow" if playerName1 == playerName2 then outputDebugString("players playerName1 and playerName2 do share the same name. Name: " .. tostring(playerName1)) -- < this is a debug line else outputDebugString("players playerName1 and playerName2 do NOT share the same name. playerName1: " .. tostring(playerName1) .. ", playerName2: " .. tostring(playerName2)) -- < this is a debug line end Debug console "players playerName1 and playerName2 do NOT share the same name. playerName1: snake1, playerName2: cow" Easy isn't? The concept behind this debug method is to see what the code does / doesn't execute. Is this method handy? It is actually the very basic of debugging, for code that doesn't contain any errors/warnings. I would say it is handy and it is a very powerful method too. It is also handy for people who do not know how to script. If you want people to help you with your code, but you do not know what is wrong with it. You can add those debug lines and point out to where the code stops working. This will make it more efficient for you and the scripter to work out the problem, because the scripter knows where to look. How much debug lines do you have to add to your script? 1? 10? 100? 1000? You could start with around 100 debug lines and as you learn how to script, you can reduce it to 10+ debug lines. Too much debug lines are not always good, because they will give you too much information and it will cost time to manually filter them. So I recommend you to remove some of them afterwards. When you are finished with the tested code, you can remove 90+% of them. Feel free to disable them instead of removing them, if you know that you are going to need them again. For complex code, I use around 25 debug lines, SO DON'T HOLD BACK! Render events It is strongly recommended to remove debug lines that are executed on onClientRender/render events when you are finished with your code. Because that can have influence on the smooth fps.(It will not drop much of the fps, but it can make it feel unsmooth) Clearing the debug console? /cleardebug Know your tools: outputDebugString -- Show a message on the Debug Console bool outputDebugString ( string text, [ int level=3, int red=255, int green=255, int blue=255 ] ) --- outputConsole -- Show a message on the F8 panel. bool outputConsole ( string text ) -- client bool outputConsole ( string text, [ element visibleTo=getRootElement() ] ) -- server --- inspect -- Convert one mixed value to a string. string inspect ( mixed var ) --- print -- Show a message on the terminal / serverwindow / Debug Console. bool print ( string var1[, string var2, string var3...] ) --- tostring() -- Convert a value in to a string. (but for objects/elements, inspect works better) --- iprint -- Show a message on the terminal / serverwindow / Debug Console (convert multiple mixed values automatic to string, no need for tostring or inspect) bool iprint ( mixed var1[, mixed var2, mixed var3...] ) --- outputChatBox -- You can also debug with outputChatBox (even though it is less efficient) bool outputChatBox ( string text [, int r=231, int g=217, int b=176, bool colorCoded=false ] ) -- client bool outputChatBox ( string text [, element visibleTo=getRootElement(), int r=231, int g=217, int b=176, bool colorCoded=false ] ) -- server Debug message levels 0: Custom message 1: Error message 2: Warning message 3: Information message (default) Addition by @Hale https://wiki.multitheftauto.com/wiki/OutputDebugString Advanced tools: local line = debug.getinfo(1).currentline -- get the line of the script where the code has been executed. 1 = current function. (can be useful if you want to get the line where this function has been called from) https://www.lua.org/pil/23.1.html WIKI MTA: WIKI MTA debugging tutorial/information. https://wiki.multitheftauto.com/wiki/Debugging
    17 points
  44. pAttach Optimized bone attach thanks to the new MTA functions/events. This resource doesn't match with well known bone_attach, you can not use the same parameters! Documentation moved to GitHub! Go to GitHub...
    17 points
  45. Sphene is a SCM Interpreter in development for Multi Theft Auto. It is capable of running the mission scripts and parsing many other game files in order to recreate the storyline, minigames and anything else the default game has within Multi Theft Auto. We will then add Co-Op on top of it. In this video you are able to see Sphene run the N.O.E mission with only very minor bugs (such as the radar sound not always working). We did not specifically target this mission but the more we are able to implement all the game logic the more parts of the game become available. This is the first mission to be fully playable from start to end.
    17 points
  46. Introduction Properly handling your user's credentials (username and password) is very important, this guide gives detailed information and code samples on how to (properly) implement an account "system". This guide assumes you are not using MTA's built in accounts. Disclaimer: Any code shown in this tutorial is purely for illustrative purposes, and is not finished code, you should use it as a guideline, not a solution. Content The following topics will be discussed in this tutorial: How to hash and salt passwords (register) How to validate a hashed password (login) How to add "remember-me" functionality How to offer password recovery How to migrate from an older hashing algorithm, to a newer one Using a password policy (Extra) How to handle database leaks (Extra) What even is hashing and salting? For the purpose of this tutorial we expect a database structure which is somewhat similar to this: How to hash and salt passwords When you have a user register on your service, that user expects of you to keep their password safe. Whilst it is generally bad practice to use the same password for multiple services there are many users that still do so. Because of this it's crucial that you save the user's passwords in a way that an attacker will be unable to find out the original password the user typed. This includes if they have full access to your database. In order to do this we do what is called "Password hashing" When a user registers, your server receives the user's intended username, (email) and password. Before you save that password to the database you have to hash and salt this, luckily MTA has a function that takes care of this. If you wish to know more about what exactly it does, there's more information at the end of this tutorial. In order to hash this password you use the passwordHash function. This function is relatively slow (by design), so it is highly recommended you pass a callback to this function, so your entire script doesn't wait for it to complete. https://wiki.multitheftauto.com/wiki/PasswordHash local mysqlHandle -- we're assuming this value is set somewhere else in code function register(username, email, password) local player = client passwordHash(password, "bcrypt", {}, function(hashedPassword) -- callback function for hashing the password local handle = dbQuery(function(handle) -- callback function for storing the user in the database if (handle) then triggerClientEvent(player, "registrationSuccess") -- inform the user that registration was successful else triggerClientEvent(player, "registrationFailed") end end,mysqlHandle, "INSERT INTO users (email, username, password) VALUES (?, ?, ?)", email, username, hashedPassword) end) end addEvent("passwordTutorial:register", true) addEventHandler("passwordTutorial:register", getRootElement(), register) How to validate a hashed password Once you've saved the hashed password to your database you need to do a little bit of additional work when authenticating the user. Luckily MTA offers a passwordVerify() function, which is the counterpart of the previously discussed passwordHash(). What this function does it basically hashes the password in the same way, resulting in the same output hash. https://wiki.multitheftauto.com/wiki/passwordVerify In order to get the account the user is trying to log in to you have to do a query for an account which has the user submitted username, and of which the password matches through passwordVerify. PasswordVerify is also a relatively slow function, thus you should use a callback. function login(username, password) local player = client dbQuery(function (handle) -- callback for the query selecting the user by username local results = dbPoll(handle, -1) if (#results == 0) then triggerClientEvent(player, "loginFailed") return end passwordVerify(password, results[1].password, {}, function(matches) -- callback function for the password verify if (matches) then -- Do anything you wish with the database result to log the player in with the rest of your scripts triggerClientEvent(player, "loginSuccess") else triggerClientEvent(player, "loginFailed") end end) end, mysqlHandle, "SELECT * FROM users WHERE username = ?", username) end addEvent("passwordTutorial:login", true) addEventHandler("passwordTutorial:login", getRootElement(), login) How to add "remember me" functionality When users on your server log in, they often do not want to have to enter their username and password every time they want to log in. In order to satisfy this need you can implement a "remember me" function. What I've seen happen in the past, is people would store the user's password (encrypted) on the client. This is NOT safe, and should never be done! In order to properly use remember me functionality what you would do is upon login in, generate a random string. The longer the better. This random string is what we call an access token. You would then allow the user to log in with such an access token, preferably only once generating a new access token each time one is used. To implement this you would generate that token every time the user logs in, whilst they have "remember me" enabled. You will have to save this token in your database alongside your user. For extra security you could also store the user's serial alongside the access token, you can then validate that the access token is being used from the same device. https://wiki.multitheftauto.com/wiki/Filepath function login(username, password) -- This code should be put in the callback to the dbQuery function, but to keep the example clean that's not shown here if (rememberMe) then local token = generateRandomToken() dbQuery(mysqlHandle, "INSERT INTO access_tokens (user_id, token) VALUES (?, ?)", results[1].id, token) triggerClientEvent(player, "loginSuccess", token) end end function rememberMeLogin(username, accessToken) -- this function handles a user's login attempt dbQuery(function(handle) local result = dbPoll(handle, -1) if (#result == 0) then triggerClientEvent(player, "loginFailed") else -- Do anything you wish with the database result to log the player in with the rest of your scripts triggerClientEvent(player, "loginSuccess") end end,mysqlHandle, "SELECT users.* FROM access_tokens JOIN users ON users.id = access_tokens.user_id WHERE users.username = ?", username) end addEvent("passwordTutorial:loginRememberMe", true) addEventHandler("passwordTutorial:loginRememberMe", getRootElement(), login) How to offer password recovery Offering password recovery requires a little bit more than just your MTA server. Generally password recovery is done with emails. So you would need access to an email server / service which you can use to send an email from an HTTP request. (Like you can do with fetchRemote()). When a user requests a password reset, have them enter the email you registered with. You then fetch a user from the database with this email address. You would then store a password recovery token for this user. This token, just like the remember me token, is a random string. Ideally, you would send the user a link with a password reset form that goes to a webpage where the user can reset their password. You could do this with an external service, like a webserver. Or you could use MTA's Resource web access for it, but if you do make sure you handle permissions properly for anything else that uses this. However another option would be to have the user copy paste the generated token from the email into you server's login window. Which of the two solutions you pick is up to you, my personal preference goes to the one with the link in the email. But in either case the server side logic is the same. When the user attempts to perform password recovery, verify that the token they give you belongs to a user, and then change the password to the newly requested password. Make sure you hash this password the same way you do in your login. function requestPasswordRecovery(email) dbQuery(function (handle)) local result = dbPoll(handle, -1) if (#result == 0) then triggerClientEvent(player, "passwordTutorial:passwordRecoveryRequestFailed") else local token = generateRandomToken() dbExec(mysqlHandle, "UPDATE user_data SET recovery_token = ?", token) -- mail the token to the user, mail implementation depends on the mail server/service you use triggerClientEvent(player, "passwordTutorial:passwordRecoveryRequestSuccess") end end, mysqlHandle, "SELECT * FROM users WHERE email = ?", email) end function recoverPassword(recoveryToken, password) dbQuery(function (handle) local result = dbPoll(handle, -1) if (#result == 0) then -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoveryFailed") else passwordHash(password, "bcrypt", {}, function(hashedPassword) -- callback function for hashing the password local handle = dbExec(function(handle) -- callback function for storing the new password in the database if (handle) then -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoverySuccess") -- inform the user that registration was successful else -- this is only valid if you have the user request password recovery from ingame triggerClientEvent(player, "passwordTutorial:passwordRecoveryFailed") end end,mysqlHandle, "UPDATE user_data SET password = ? WHERE recovery_token = ?", username, recoveryToken) end) end end, "SELECT * FROM users WHERE recovery_token = ?", recoveryToken) end Besides changing the password, it's important you also delete any access tokens that user might have if you're using remember me functionality. It is also good practice to make recovery tokens expiry after a certain amount of times, and not allow a recovery token to be created whilst one is already in progress. This prevents a user from sending a large number of emails from your service. How to migrate from an older hashing algorithm, to a newer one Maybe after reading this topic you realise that your password security is not what it should be. So you want to change your old password hashing / validation logic to the ones explained in this topic. And due to the nature that hashes can not be "unhashed", you can't simply migrate your passwords over. So in order to migrate the passwords what you have to do is when a user logs in, first validate their password with the old hashing algorithm. If this matches, then hash (and salt) it with your new hashing algorithm and save it in your database. Make sure to delete the old password otherwise your password security is not any better than before. Using a password policy Passwords policies are important to prevent your users from picking a password that is too easily cracked / brute forced. Many password policies come in the form of "Must have at least one capital letter, one digit and one number". But that discards that fact that the best way to make your password more difficult to crack, is making your password longer. So in the code snippet below is a function that measures the 'search space' of a password. The search space of a password is the amount of possible passwords there are with a certain combination of characters. In order to use this, you would have to set a minimum password search space when a user registers for an account. This minimum is up for you to set, but be reasonable, you shouldn't expect a user's password to be impossible to remember / create. I recommend playing with the function a bit to see what values you get out of it, and pick something you believe is sensible. function getPasswordSearchSpace(password) local lowerCase = password:find("%l") and 26 or 0 local upperCase = password:find("%u") and 26 or 0 local digits = password:find("%d") and 10 or 0 local symbols = password:find("%W") and 32 or 0 local length = password:len() return (lowerCase + upperCase + digits + symbols) ^ length end -- The below function calls are to indicate the difference in search space for a set of passwords print(getPasswordSearchSpace("a")) print(getPasswordSearchSpace("abc")) print(getPasswordSearchSpace("Abc")) print(getPasswordSearchSpace("Ab!")) print(getPasswordSearchSpace("Ab!0")) print(getPasswordSearchSpace("Mu#9A0h.")) print(getPasswordSearchSpace("This is a demonstration of how easy an incredibly strong password is to remember")) How to handle database leaks If you have reason to believe that your database has been leaked or otherwise compromised, it is important that your first course of action is removing any access tokens stored in your database. Once you have done that you have to inform your users. Whilst when properly hashed and salted it's extremely difficult / time consuming to find out a user's password it is still a possibility. So you should inform your users of the breach, tell them that their passwords were properly hashed, and they do not need to fear for their passwords immediately. However you should suggest to your users that they change their password either way, just in case. What even is hashing and salting? Hashing has been brought up several times in this tutorial, whilst you do not need to know what it is / does, you might be interested in knowing regardless. I won't be going too far in depth as I simply do not have the knowledge, but the basic idea of hashing is this: When you hash anything, you turn it into a string of characters (or other value) that has no relation to the original input, other than when you hash the original input again, it will always generate the same hash. For example, when you hash the string 'banana' using the sha512 hashing algorithm, it will always yield the output: "F8E3183D38E6C51889582CB260AB825252F395B4AC8FB0E6B13E9A71F7C10A80D5301E4A949F2783CB0C20205F1D850F87045F4420AD2271C8FD5F0CD8944BE3" Now hashing can not be reverted, you can not "unhash" a hash, so in order to verify someone's password you hash it again, and see if the two hashes are the exact same. Now this is great, passwords are safely stored. However there is still more to do, salting. Salting is adding some random data to your password prior to hashing it. This prevents when two users (on the same service, or on others) have the same password, that their hashes are also the same. Meaning if one password is compromised, the other password is not. It is important that a salt is random for every user in your application, not one salt for your entire application. Now you might think we didn't do any salting in the code / tutorial above. This is not true, we just didn't do it ourselves. MTA's passwordHash function actually hashes the passwords and salts it, this salt is then stored in the output hash it self, just before the actual password hash. In the case of bcrypt it actually stores a little bit more info in the resulting hash, but you need not worry about that.
    17 points
  47. Draw distance v1.0.2 This resource improves the draw distance of all your resources that make use of map files. It makes your maps 10x more beautiful in my opinion! Greatly improves the draw distance of map objects Maxed out the draw-distance for peds and vehicles. (See MTA settings > video: Render vehicles always in high detail + Render peds always in high detail ) Multi-resources support (this effect is applied on every mapRoot element) Parallel loading method is used, but the loading speed is in that case reduced to improve performance. The effect is not only applied on resources that are starting, but also resources that are already running. Download here This resource is uncompiled! Repository: https://gitlab.com/IIYAMA12/draw-distance Video - Created by @Anx1ty Comparison Starting at 200 units distance 400 units distance (this is the distance where a lot of objects will be unloaded, but in this case switched with lowLOD objects) And even on 600 units distance, it is technically visible -> (while the fog is slowly eating it up... ) Download here Can all hardware run this? --> I have no idea... most likely ?. Just give it a try.
    16 points
  48. For long time i considered to do something with physics in mta. For now doing even simplest things such falling box, tree on flat area looks cartoonish. In my history of i saw few attempts of doing simple physics, mostly it was in closed area without bigger interactions with poor performance due you just can't calculate collision in other way than processLineOfSight, isLineOfSightClear or read directly .col file as Tederis did. I started with something to render things, thats how FBX https://github.com/multitheftauto/mtasa-blue/pull/1093 to bypass default rendering to handle future i'll introduce in future. That's how bullet physics project born, first idea how to use react physics, works simillar but is lighter and general smaller project but 0x416c69 suggested to use bullet. I'll use this topic also to prepare long list of features it contains for future copy paste to PR and wiki page The main assumption is to allow for create multiple world with completly independed simulations, get and set detailed information about current step of simulation, fully control how everything is simulated, quality of collision tests, speed and a lot more. i'm trying keep amount of functions low, because if that most stuff is packed into one function. Syntax and name of some function might change in future or along suggestions. Not all properties supports every physics element, some are only get, other set only, however most of them are set/get Current stage: I already implemented function such a: physics physicsCreateWorld() - responsible for creating new world for simulations, return element which will use later. physics-rigidbody physicsCreateRigidBody( shape-type, mixed arguments ) - creates rigid body which is use to simulation bahaviour of non-static shapes, collisions ( currently only few models in mta can do this in simple way ). physics-rigidbody physicsCreateRigidBodyFromModel( model ) - used to create rigid body directly from collision data taken from gta model. physics-static-collision physicsCreateStaticCollision( shape-type, mixed arguments ) - creates static collision which will not move at all ( it is still possible to move it by Lua script ) physics-shape physicsAddShape( shape-type, mixed arguments ) - if you create compound shape, this function let you add more shapes into static collision or rigid body bool physicsSetProperties( any physics element, physics-property, mixed arguments ) - main function to control physics, rigid bodies, static collisions, shapes. Works in simillar way as handling functions. mixed physicsGetProperties( any physics element, physics-property ) - same as above, but getting properties bool physicsDrawDebug( physics ) - use to visualization of world, must be used in render function bool physicsSetDebugMode( physics-debug-mode, enabled ) - use to turn off/on debugging features bool physicsBuildCollisionFromGTA( physics ) - used to create static collisions in specified world from original collisions, doesn't create whole world instantly, require to move player around world to load collision data. physics-constraint physicsCreateConstraint( physics, physics-rigid-body, physics-rigid-body, constraint-type, mixed arguments ) - use to connecting two or more rigid bodies into one entity bool physicsApplyForce( physics-rigid-body, vector from, vector to ) - pushing rigid body in particular point you choosed. bool physicsApplyCentralForce( physics-rigid-body, vector direction ) - apply force from central position of rigid, it's more like "accelereate", should be used more than once at the some period of time bool physicsApplyCentralImpulse( physics-rigid-body, vector direction ) - setting position from center of rigid bool physicsApplyDamping( physics-rigid-body, float force ) - i'm not sure, but it should slow down velocity and rotation of model by specified amount of units physicsApplyImpulse( physics-rigid-body, vector direction ) - i'm not sure how it works physicsApplyTorque( physics-rigid-body, vector rotation ) - same as physicsApplyCentralForce but for rotation physicsApplyTorqueImpulse( physics-rigid-body, vector rotation ) - setting rotation speed physics-properties: "mass", "position" ,"rotation", "sleepingthresholds", "restitution", "scale" "debugcolor", "filtermask", "filtergroup", "stiffness" `sleepingthresholds` means how slow rigid must move/rotate to sleep, it makes stops moving at all but still can be pushed by other rigids `restitution` bounciness, between 0-1 but accept any value above `stiffness` - for fixed constraint `filtermask` i still figuring out how it work, but should let you use 32 bit mask to set which rigid with which should collide Bullet documentation: https://github.com/bulletphysics/bullet3/blob/master/docs/Bullet_User_Manual.pdf page 13 contains useful information when which shape should be used physics-constraints: "pointtopoint", "hidge", "fixed", "slider" Physics-shapes: "box", "sphere", "capsule", "cone", "cylinder", "heightfieldterrain", "compound", "trianglemesh", "convexhull" `compound` is used for constructing rigid made of various shapes Plans for future: "heightfieldterrain" shape type accept black-white texture for faster creation Support for cloths, soft bodies Media: Videos are availiable at my youtube channel https://www.youtube.com/channel/UC95MpsQ1JppDNpMvl_7c1rg screenshots and gifs of current progress: Documentation i use: https://pybullet.org/Bullet/BulletFull I'm waiting for your suggestions Topic not finishedd
    16 points
  49. O que é? Pra que serve? Um banco de dados é onde ficam salvos diversos tipos de dados que são usados entre as sessões dos jogadores e do servidor, isto significa que mesmo se o jogador relogar no servidor ou até mesmo o servidor reiniciar, os dados salvos no banco de dados não são perdidos. (se o script que salvou lá foi feito corretamente). O que posso salvar neles? O MTA já cria 2 bancos de dados padrão quando vc cria seu servidor, são eles: internal.db - Onde são salvos todos os dados das contas dos jogadores, login, senha, grana do bolso, posição do jogador quando deslogou, vida, colete, skin, armas, munição, etc. registry.db - Onde são salvos todos os dados que são utilizados pelos resources, como por exemplo melhores pontuações das corridas (race gamemode), proprietários das casas, dados bancários dos jogadores, saldo bancário dos jogadores, carros comprados pelos jogadores, roupas compradas pelos jogadores, empresas adquiridas pelos jogadores, etc. Onde eles estão? Estes dois bancos de dados estão na pasta deathmatch do seu servidor, estão na linguagem SQLite. Você ainda pode criar outros bancos de dados externos, para serem usados pelos resources, mas na minha opinião isso não é recomendável, uma vez que vc usaria MySQL, que é mais complexo e exige certos cuidados de acesso e domínio, mas alguns servidores profissionais precisam fazer assim pois fizeram os bancos de dados ficarem fora do servidor em outro IP por segurança, dai é necessário ter bancos de dados externos. Nesse tutorial vamos tratar somente dos bancos de dados nativos do MTA, por serem mais fáceis de entender. Como mexo neles? Para salvar alguma coisa na conta do jogador, isto é, no internal.db, você usa setAccountData, e para obter esses dados depois, use getAccountData. É extremamente simples, funciona da mesma forma que um setElementData, mas em vez de salvar uma data temporária em um elemento, salva uma data permanente numa conta. Porém, para salvar alguma coisa no registry.db, é um pouco mais complicado, uma vez que vc vai precisar criar uma tabela nova para cada resource. Por exemplo, vc acabou de criar um resource de ranking por kills/deaths e você deseja salvar esse ranking no banco de dados para que ao reiniciar o resource ou o servidor, o ranking não seja perdido. Para isso vc vai precisar primeiramente criar uma tabela no banco de dados registry.db, essa tabela será acessada pelo resource, que irá salvar os dados dele lá. Para fazer qualquer coisa neste banco de dados (criar tabelas, inserir, alterar, remover, deletar, inserir colunas em determinada tabela, etc) vc vai precisar usar isso: executeSQLQuery. Aqui, será necessário conhecimento em SQL para fazer isso, mas é mais fácil do que aprender uma linguagem de programação nova, pois suas opções e sintaxes são menores do que uma linguagem inteira de programação, você não vai inventar nenhum sistema novo aqui, apenas criar e gerenciar tabelas e dados. Criar tabela nova no banco de dados: (o Caps Lock não é uma regra, mas é melhor para entender o que é código e o que é nome) [Os seguintes códigos só funcionam server-side] executeSQLQuery ("CREATE TABLE IF NOT EXISTS nomedatabela (nomecoluna1 TEXT, nomecoluna2 REAL, nomecoluna3 INTEGER)") TEXT = Valores desta coluna serão textos. Podem ter símbolos, números e espaços. REAL = Valores desta coluna serão numéricos reais. (números decimais, positivos, negativos e 0.0) INTEGER = Valores desta coluna serão numéricos inteiros. (positivos, negativos e 0) (não existe tipo BOOLEAN, use TEXT e insira valor "false" ou "true") (existe valor NULL, é diferente de vazio e diferente de 0. NULL significa ausência de dados. O NULL aparece quando você cria uma linha ou coluna nova sem atribuir valores a elas.) Deletar tabela do banco de dados: executeSQLQuery ("DROP TABLE nomedatabela") Todas as linhas, colunas, células e valores desta tabela são deletados junto. Deletar linhas da tabela: (as células não ficarão NULL) executeSQLQuery ("DELETE FROM nomedatabela WHERE colunaespecífica=?", valorDaCelulaEspecifica) O ? indica que o valor está após a declaração do SQL. Você poderia colocar o valor direto no lugar do ?. Mas por alguma razão, as vezes isso gera erro. Além disso, se o valor da célula estiver em uma variável no seu script, você não pode declarar a variável no lugar do ?. Ali só pode ser o valor direto, pois a declaração SQL inteira se trata de uma string. Por isso o uso do ?, que está recebendo o valor da variável que está depois da vírgula. Obs: Para verificar se uma célula tem valor nulo, não se usa os operadores lógicos de ==, <= >=. Para isso, usa-se IS NULL ou IS NOT NULL. Ex: executeSQLQuery ("DELETE nomecoluna1,nomecoluna2 FROM nomedatabela WHERE nomecoluna3 IS NULL") Isso vai deletar todas as células da coluna 1 e coluna 2 onde a coluna 3 tem uma célula de valor NULL. Se a coluna 3 não tiver nenhuma célula de valor NULL, nada acontece. Inserir nova linha de valores: (ele vai criar automaticamente uma nova linha com novas células) executeSQLQuery ("INSERT INTO nomedatabela(nomecoluna1,nomecoluna2,nomecoluna3) VALUES(?,?,?)", valorCelulaColuna1, valorCelulaColuna2, valorCelulaColuna3) Neste caso, ele está inserindo 3 novos valores, cada valor em uma coluna. Se você não declarar os nomes das colunas, ele vai preencher na ordem das colunas automaticamente. Você pode deixar de declarar uma coluna se não quiser atribuir valor na célula daquela coluna. Se o tipo de valor da variável não for do tipo de dado daquela coluna, dará erro. Atualizar valores de células que já existem em uma tabela: (não é possível alterar os tipos de valores, é necessário editar o tipo da coluna se quiser fazer isso) executeSQLQuery ("UPDATE nomedatabela SET nomecoluna2=?,nomecoluna3=? WHERE nomecoluna1=?", valorCelulaColuna2, valorCelulaColuna3, valorCelulaColuna1) No caso acima, ele vai atualizar as células das colunas 2 e 3 onde o valor da célula da coluna 1 for igual ao valor de valorColunaCelula1. OBS: Nada impede que você coloque as primeiras variáveis junto à declaração SQL, mas para fazer isso você deve "cortar" a string, inserir as variáveis e depois continuar a string, Ex: executeSQLQuery ("UPDATE nomedatabela SET nomecoluna2= '".. valorCelulaColuna2 .."',nomecoluna3='".. valorCelulaColuna2 .."' WHERE nomecoluna1=?", valorCelulaColuna1) Lembrando que o valor destas variáveis também são strings na declaração, portanto use aspas simples antes e depois de cada corte para transformar os valores em string. Os dois pontos (..) significam que estes valores fazem parte do argumento SQL. Da mesma forma, se vc usar "1" .. "1", será igual a "11". (Por isso acho muito mais fácil deixar tudo ? na declaração SQL e colocar as variáveis todas após a string.) Selecionar determinadas células da tabela: (usado geralmente para obter os valores destas células para usar no script, você pode selecionar somente 1 célula ou várias) executeSQLQuery ("SELECT nomecoluna1,nomecoluna2 FROM nomedatabela WHERE nomecoluna3=?", valorCelulaColuna3) Neste exemplo, ele vai selecionar a célula da coluna 1 e a célula da coluna 2, na linha onde a célula da coluna 3 for igual a valorCelulaColuna3. Alterar a tabela (adicionar coluna nova) [SQLite não suporta deletar coluna nem editar tipo de coluna] executeSQLQuery ("ALTER TABLE nomedatabela ADD nomecoluna4 REAL") Devido a limitações do SQLite, ALTER TABLE não pode ser usado para deletar uma coluna nem para editar seu tipo. Para fazer isso é necessário recriar a tabela inteira com as novas alterações. No exemplo acima, ele vai adicionar uma nova coluna chamada "nomecoluna4". Tá, mas como ficaria tudo isso dentro de um script? Fiz um código com vários testes de banco de dados. Cada comando faz alguma coisa. É possível mexer em um banco de dados manualmente sem usar scripts? Sim, é possível. Eu mesmo costumo fazer isso para corrigir algumas coisas rápidas sem precisar programar mais nada. Para poder abrir os bancos de dados (internal.db e registry.db) você deve usar um programa chamado DB Browser for SQLite. Um programa gratuito, leve e bem fácil de entender. Nele você consegue acessar todas as tabelas do banco de dados e editar os valores como se fosse em uma planilha do Excel. Basta ir na aba Navegar dados, selecionar a tabela que deseja modificar, clicar em cima da célula cujo valor deseja atualizar, digitar o novo valor, clicar em Aplicar e depois clicar em Escrever modificações (salvar banco de dados). Pronto! E tem mais! Se você já tiver conhecimento avançado com a linguagem SQL, você também pode fazer alterações avançadas via código dentro do programa. Basta acessar a aba Executar SQL, escrever o comando SQL corretamente e depois clicar no botão de Play. Espero ter ajudado.
    16 points
  50. مرحبا لقد قمت بإطلاق الاصدار الجديد من لوحة الادمنية العربية بعد ان لاحظت ان معظم الاعضاء يقومون بإستخدام لوحات الادمنية العربية القديمة التي مر عليها الدهر من دون اي تحديثات او حماية وكما انها غير مؤمنه كـ اي لوحة ادمنية حديثة الإنشاء,( وبالمناسبة انني هولندي ولا اتحدث اللغة العربية ) وكما انني بذلت الكثير من جهدي حتي اقوم بنقل الترجمة العربية من اللوحات العربية القديمة الي هذه اللوحة حديثة الصنع وكل ما اريده هو ان اقوم بإفادة اصحاب السيرفرات الذين يستخدمون لوحة الادمنية العربية القديمة وكما انه يمكنك ان تري اخر تحديثات لوحة الادمنية من خلال : https://github.com/multitheftauto/mtasa-resources/commits/master/[admin]/admin وإذا كان لديك صاحب سيرفر يستخدم لوحة الادمنية العربية القديمة رجاء اخبره بهذا الموضوع لكي يقوم بتحميل النسخة الحديثة من اللوحة العربية لتحميل اللوحة العربية DOWNLOAD:https://community.multitheftauto.com/?p=resources&s=details&id=14837 واذا كان هناك خطأ في ترجمة اللوحة رجاء اخبرني " لقد تمت ترجمة الموضوع من قبل نصور " ENG: I'm here releasing a new Arabic-translated admin panel from today's version (september 2017) after I noticed all community circulating AR panels were outdated as hell. As they pose serious security risks, eventhough I'm not Arabic, I felt it of such importance that I've spent a long time transferring translations from older circulating panels to this most up-to-date Admin panel. I'm helping a huge amount of server owners with this, because most will just use a Community version that is outdated because of the great time to invest in translating yourself. Ofcourse, you'll also benefit from new features and updates made to Admin recently, (look here: https://github.com/multitheftauto/mtasa-resources/commits/master/[admin]) both for this reason and security I advise you inform all server owners you know about this release and suggest they update if they're using Arab panels. If you spot any translation issues, please leave a reply. Main view example; (updated 24/09/2018)
    16 points
×
×
  • Create New...