Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 28/03/23 in Posts

  1. 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
  2. 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
  3. 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
  4. Celebrating Two Decades of Gaming: SAES/VCES Community's 20-Year Milestone on Multi Theft Auto. Introduction: In the ever-evolving realm of online gaming, communities often rise and fall, yet some endure, leaving an indelible mark that spans decades. One such resilient community is the SAES Community, an integral part of the Multi Theft Auto (MTA) landscape for an impressive two decades. A Journey Through Time: Established in 2003 as VCES (Vice City Emergency Services), the community initially operated as a gang on a modest 32-player server, organizing weekly gang wars and competitions. However, as MTA:VC gained basic scripting support, the server gradually transitioned into an RPG game mode, and the gang evolved into a thriving community. SAES has maintained a steadfast presence in the MTA universe, consistently delivering an immersive and captivating gaming experience. Over the past 20 years, the community has undergone transformations, adapted to changes, and flourished, weaving a tapestry of cherished memories for its members. Diverse Gameplay: At the core of SAES lies an expansive array of gameplay options tailored to a diverse audience. Whether you revel in adrenaline-pumping car chases, strategic law enforcement operations, or the allure of the criminal underworld, SAES provides a dynamic platform catering to every gamer's preference. For those seeking a more relaxed experience, players can embrace simpler roles, such as being a lorry driver, mechanic or a medic, offering a variety of choices to suit individual playstyles. The versatility of gameplay ensures that SAES caters to both the thrill-seekers and those who prefer a more laid-back virtual existence. Community Engagement: Beyond the virtual realm, SAES transcends the typical gaming community; it's a family. Through forums, Discord channels, and regular events, members can connect, share experiences, and cultivate lasting friendships. The sense of community extends beyond the pixels on the screen, making SAES a welcoming space for gamers from all walks of life. Join the Celebration: As SAES commemorates two decades of gaming on Multi Theft Auto, now is the opportune moment to join the celebration. Whether you're a seasoned veteran or a newcomer eager to explore the vibrant world of MTA, SAES welcomes you with open arms. SAES will be hosting an event night on November 25, 2023, at 19:00 GMT, featuring in-game prizes and rewards. All players are invited to join. Server details: IP: 87.98.254.54 (mta.saesrpg.uk) Port: 4999 Alternative server details: (For those who cannot connect from Turkey) IP: 94.23.154.230 PORT: 4999 Visit the SAES website at https://saesrpg.uk to discover more about the SAES Community, explore diverse gameplay options, and connect with a community that has withstood the test of time. Here's to another 20 years of virtual adventures, friendships, and memories on Multi Theft Auto! https://discord.gg/saes-rpg-229936715383439361?event=1174300635726872587 Here are some screenshots from over the years.
    8 points
  5. * clears the dust off his old forum account * Happy birthday MTA! WOW, 20 years! Lots of memories here. I'm one of the few original contributors from the early days (~2003). I introduced novel techniques for injecting code into GTA (MTA:Blue) through my time experimenting with game hacking (yes, the kind where you see through walls, though as an educational exercise). I "studied" under some of the creators that made counterstrike OGC, namely a guy named PharLap, who was insanely smart. Also, some folks in the #winprog channel on EFNet. Never in my wildest dreams did I imagine MTA would bring so much joy to so many. I was initially interested in MTA for selfish reasons: Not too long out of high school, I was drifting away from my friend who would play peer to peer GTA2 with me over dialup. When GTA3 came out, I was severely disappointed: No multiplayer support. I quickly realized keeping up a remote friendship by bonding over games wouldn't be possible. I searched around for "GTA multiplayer" on an early Google. Not much came back, except a couple early mods, one by our friend, IJs. Early MTA used to directly overwrite memory from an entirely outside process. Because of the way that worked, the outside process never had true knowledge of what the game was doing. Gameplay was choppy and crashed quite a bit. However, it was still mostly fun. Working with IJs, Cray, eAi, and others, we started development on a new foundation for the mod based on the premise of injecting code directly into GTA. That foundation was called MTA:Blue. It was actually modeled after some of the naming conventions and structures in Quake (the source was available by this point), except we had additions for hooking various subsystems. I'm sure I have some backup artifacts on old disks somewhere but I'm remote at the moment. I remember the fun problems. There were very hard problems for us to figure out how the game worked, and how internal memory structures worked with zero access to source code (I distinctly remember discussing this often with eAi). It's akin to feeling your way around a room when it's pitch black, using intuition and past knowledge to reason about what likely steps to take to make progress on our goals. Seeing players move around live in game--after contributions from folks like Cray who developed initial "net code" -- were super fun. We also had a prototype for in game voice communication around 2004 or so. Then came the editors, scripting, etc which added fuel to the fire and made MTA truly remarkable. Since MTA was basically GTA itself by this point, I remember needing a GUI. I prototyped CEGUI in, and others piled in to add additional elements. The in-game menu system was born. We added health bars, and all the fancy foundational stuff that made it feel less like a mod and more like just a solid game. Yes cray, I still remember your g4tv interview! Haha. It was cool. EDIT: Speaking of drama, I also remember when Rockstar added DRM to San Andreas that seemed to spell the end of the mod. I remember figuring out a bypass, and the subsequent demo we posted for the forum showing SA was ON. What an exhilarating experience. I remember the drama. A certain developer we had who ran off with our source and open sourced it as their own under a different name (early MTA was not open source). I remember seeing my name in the source files they produced and claimed as their own. Awkward! I'm still amazed that so many people play MTA. While I haven't been actively involved in ages (same as eAi--circa 2007), I actively watch progress and keep tabs. I also idle on discord, so say hi Lots of friends that I know in there. I would love to meet some folks in person at some point in my life over a beer. As others have said, MTA was really a bunch of dorks working remotely at their houses and communicating over IRC. As others have said, working on MTA has definitely impacted my life trajectory. I was hired into a (then) little known cybersecurity company named Rapid7 in 2005 (went public in 2015). I was CTO at another security company, and I currently run https://furl.ai with a bunch of super smart people.
    7 points
  6. Hello dear MTA players,My name is Eren(Shady) ,today I will show you String and Strings types in a simple and short way with examples, this string formula, which I needed very much at the time, is very useful for me today, so I decided to use it and make this tutorial to learn more, I hope I was able to explain it well. Strings and String Methods In Lua, a string is a sequence of characters that represents text data. Strings are used extensively in programming for storing and manipulating text-based information. In this tutorial, we will explore the different string types in Lua and how to manipulate them. Single Quoted Strings A single-quoted string is created by enclosing a sequence of characters between two single quotes. For example: local str = 'Hello, world!' Single-quoted strings are useful for creating short, simple strings that do not contain any special characters. If you need to include a single quote character within a single-quoted string, you can escape it using a backslash: local str = 'It\'s a beautiful day!' Double Quoted Strings A double-quoted string is created by enclosing a sequence of characters between two double quotes. For example: local str = "Hello, world!" Double-quoted strings are useful for creating more complex strings that may contain special characters such as escape sequences or variables. If you need to include a double quote character within a double-quoted string, you can escape it using a backslash: local str = "She said, \"Hello!\"" Long Strings A long string is created by enclosing a sequence of characters between two square brackets. For example: local str = [[This is a long string that spans multiple lines]] Long strings are useful for creating strings that contain multiple lines of text, such as paragraphs or blocks of code. They can also be used to create strings that contain special characters without the need for escape sequences. String Concatenation You can concatenate two or more strings together using the .. operator. For example: local str1 = "Hello" local str2 = "world" local str3 = str1 .. ", " .. str2 .. "!" In this example, str3 would contain the string "Hello, world!". String Manipulation Lua provides a number of built-in functions for manipulating strings. Some of the most commonly used string functions include: string.sub(str, start, end): Returns a substring of str starting at start and ending at end. string.len(str): Returns the length of str. string.lower(str): Returns str with all letters in lowercase. string.upper(str): Returns str with all letters in uppercase. string.rep(str, n): Returns str repeated n times. Pattern Matching Lua also provides a powerful pattern matching library that can be used to search and manipulate strings based on a pattern. The string.gsub() function is particularly useful for replacing parts of a string that match a pattern with another string. Here is an example of using string.gsub() to replace all occurrences of the word "dog" with the word "cat" in a string: local str = "I have a dog, but my neighbor has two dogs." local newStr = string.gsub(str, "dog", "cat") In this example, newStr would contain the string "I have a cat, but my neighbor has two cats.". The string we are working with is "My name is John_Smith". We want to swap the order of the two names in the string, so that it becomes "My name is Smith_John". str = "My name is John_Smith" new_str = string.gsub(str, "(John)_(Smith)", "%2_%1") Here's how the code achieves this: string.gsub() is called with the original string str, and two patterns to match: (John) and (Smith). The parenthesis around "John" and "Smith" indicates that they are capture groups, which means that any match to these patterns will be stored as a variable. The replacement string "%2_%1" is passed as the third argument to gsub(). This string contains the % modifier, which is used to reference the captured groups. In this case, %2 refers to the second captured group ("Smith"), and %1 refers to the first captured group ("John"). gsub() performs the substitution on the original string, replacing the matched pattern (John)_(Smith) with the replacement string "%2_%1". The resulting string, "My name is Smith_John", is stored in the new_str variable. So essentially, this code swaps the order of two captured groups in a string using the gsub() function and the % modifier. But how to make it dynamic and so it matches even if it's another First and Lastname (like Bruce_Willis) ? Well, we can use what we call character classes. They are special "codes" to match a specific type of thing in your string. For example, %a means "any letter", %d means "any digit". Here is the full list those character classes: . all characters %a letters %c control characters %d digits %l lower case letters %p punctuation characters %s space characters %u upper case letters %w alphanumeric characters %x hexadecimal digits %z the character with representation 0 So in our previous example we can replace the pattern like so: str1 = "My name is John_Smith" str2 = "My name is Bruce_Willis" new_str1 = string.gsub(str1, "(%a+)_(%a+)", "%2_%1") new_str2 = string.gsub(str2, "(%a+)_(%a+)", "%2_%1") new_str will contain "My name is Smith_John" and new_str2 will contain "My name is Willis_Bruce". So it works as long as it finds one or more letters followed by an underscore followed by one or more letters. Here I also used a modifier (+) to tell the matcher he has to look for 1 or more repetition of a letter. Here are the list of the possible modifiers: + 1 or more repetitions * 0 or more repetitions - also 0 or more repetitions ? optional (0 or 1 occurrence) More infos here In Lua, "\n" is known as a newline character. It is used to represent a new line of text in a string. When a newline character is encountered in a string, it tells the computer to move the cursor to the beginning of the next line. For example : local myString = "Hello\nworld" print(myString) In this example, the string "Hello" is followed by "\n" which tells Lua to add a new line. The string "world" is then printed on the next line. Output : Hello world You can also use multiple "\n" characters in a row to add multiple new lines: local myString = "This is the first line.\n\nThis is the third line." print(myString) In this example, two "\n" characters are used to add two new lines between the first and third lines. Output : This is the first line. This is the third line. You can use newline characters to format your text in a more readable way. For example, if you want to print a list of items, you can use a newline character to separate each item: local myString = "List of items:\n- Item 1\n- Item 2\n- Item 3" print(myString) In this example, the string "List of items:" is followed by "\n" to add a new line, then each item is listed on a new line with a hyphen (-) to indicate a bullet point. Output : List of items: - Item 1 - Item 2 - Item 3 In summary, "\n" is a newline character in Lua that is used to add a new line in a string. It is a useful tool for formatting text and making it more readable. string.sub(str, start, end): This function returns a substring of the input string, str, starting at the start index and ending at the end index. For example: local str = "Hello, World!" local subStr = string.sub(str, 7, 12) -- This will return "World!" string.len(str): This function returns the length of the input string, str. For example: local str = "Hello, World!" local len = string.len(str) -- This will return 13 string.lower(str): This function returns a new string with all letters in the input string, str, converted to lowercase. For example: local str = "HeLLo, WoRLd!" local lowerStr = string.lower(str) -- This will return "hello, world!" string.upper(str): This function returns a new string with all letters in the input string, str, converted to uppercase. For example: local str = "HeLLo, WoRLd!" local upperStr = string.upper(str) -- This will return "HELLO, WORLD!" string.rep(str, n): This function returns a new string that is n copies of the input string, str. For example: local str = "Hello" local repStr = string.rep(str, 3) -- This will return "HelloHelloHello" string.format string.format is a Lua function that is used to format strings based on a pattern. The basic syntax of string.format is: string.format(formatstring, ...) Here, formatstring is a string that contains placeholders for values that you want to include in the formatted string. The placeholders are indicated by % symbols followed by a letter that indicates the type of value to be included. The ... is a variable argument list that contains the values to be formatted. Here are some of the most commonly used placeholders in string.format: %s: Inserts a string value %d or %i: Inserts an integer value %f: Inserts a floating-point value %%: Inserts a literal % symbol Let's see some example codes that use string.format: -- Example 1: Formatting a simple string local name = "John" local age = 25 local formattedString = string.format("My name is %s and I am %d years old.", name, age) print(formattedString) -- Output: My name is John and I am 25 years old. -- Example 2: Formatting a floating-point value with a specific precision local pi = math.pi local formattedString = string.format("The value of pi is approximately %.2f.", pi) print(formattedString) -- Output: The value of pi is approximately 3.14. -- Example 3: Formatting an integer value with leading zeros local number = 42 local formattedString = string.format("The answer is %04d.", number) print(formattedString) -- Output: The answer is 0042. In Example 1, we format a simple string with placeholders for name and age. In Example 2, we format a floating-point value for pi with a precision of two decimal places. In Example 3, we format an integer value with leading zeros to make it four digits long. Hope this helps!
    7 points
  7. Lua Language Server - Definition files The Lua language server is a powerful tool that enhances the development experience for Lua programming. It provides a comprehensive set of code editing features, including suggestions, auto-completion, and error checking. With the Lua language server, developers can effortlessly navigate through their resource files, access documentation easily, and ensure code correctness by giving warnings. Why should you care? The language server will inform you about all sorts of problems: type mismatches, missing function arguments, missing variables, etc. You have access to a lot of MTA syntax/autocomplete out of the box. The syntax information will remain while writing. You do not have to restart your resource so often in order to validate if everything is working. Type validation Having value type validation in your code editor is one of the main key features of the Lua Language Server. When working with variables, parameters, and arguments in Lua, you are not restricted to specific value types. This flexibility can make mistakes more likely to happen. However, being able to validate those mistakes instantly saves you a lot of time and frustration. Type annotations for your own functions Adding type annotations to your own functions can help improve validation and catch logic mistakes. It is particularly useful when calling functions from different parts of your code, as the annotations provide clarity on the expected input (arguments) and output (return values). Additionally, comments that are placed above or adjacent to a variable or function are visible when hovering over them in another file or line. This can provide helpful information and context when working with the code. How that looks like: How can I quickly add annotations in less than a second? Open the spoiler: AddEventHandler auto-complete Most MTA addEventHandler functions have full eventName autocompletion. And the attached anonymous function is fully autocompleted and typed as well. Navigation features of Lua Language Server It can be time consuming to find out where a (global) function or variable is located. Being able to jump right to it, saves you a lot of time. Other information which you can find in the readme Installation for the Lua Language Server How to use the definition files? Known issues Make sure to always have an empty new line at the end of your files, as recommended in this issue. Currently, the Lua server language definition files do not have a clear separation between serverside functions/events and clientside functions/events. However, it is possible to enforce this separation for specific functions if needed. outputChatBox--[[@as outputChatBox_server]]("Serverside", player) In certain cases, certain functions in the Lua server language definition files may return multiple types, even if you have selected a different syntax. To handle this situation, you can use the `cast` or `as` notation to explicitly specify the desired type or adjust the returned type. See `Casting and as` syntax below. Casting and as In certain situations, you may have a strong understanding of the type(s) that a variable or expression will have. This is where the keywords "cast" and "as" come into play. These keywords enable you to explicitly specify the intended type, ensuring proper type handling. local varName = exampleFunc() ---@cast varName string local varName = exampleFunc() ---@cast varName string | number local varName = exampleFunc() --[[@as string]] local varName = exampleFunc() --[[@as string | number]] Download The definition files can be downloaded here.
    6 points
  8. About Prime Freeroam is an advanced Freeroam server with roleplay features! It has been in development since 2017. If you find any bugs please report them on our discord. Server IP: mtasa://149.28.237.162:22003 Discord: https://discord.gg/Xz9NUAq NPC features We have an extensive NPC system that is fully synchronised and includes features such as: A wanted system with more and harder law enforcement spawning in the greater your wanted level. Traffic - pedestrians, cars and boats. You will find special pedestrians around the map - some easter eggs! Restricted areas such as Area 51 have military, hidden secrets and also tanks (For all your rampage needs!). And much more! Shops and minigames You can spend your money at all the shops in GTA SA Ammunation, Food shops, Hardware store and Strip clubs - and a few more! Time trials, drift challenges and races are located around the map. Taxi, Pizza and Trucking missions to earn money. Casino games including pool where you can compete against other players. Gangs You can join the classic gangs from GTA SA or create your own crew. You can recruit and spawn followers to command. You can even do drivebys! Take gang territories by attacking peds or players in their zone to initiate a gang war. You will have to hold the hill while fighting off waves of enemies. Freeroam To explore you can warp around the map, and spawn vehicles and customise them. We have synchronised vehicle radio, jukeboxes and ped sounds! Media https://streamable.com/tlf8ye
    6 points
  9. Hey, for last 2 months (or so) I was working on resource for MTA that implements custom rendering, idea was simple - get huge graphics improvment while saving original SA feeling, and I think I managed to do that! (Greetings to people who have been saying for years that MTA is too limited for shaders like that lol) It's important to mention - it's not ENB or any external script - it's just a resource, that server owner can start for everyone and players don't need to download anything! I'm here to share with you progress of it, yes - it's not done yet, but I'm very close to finishing it. Gallery (with slider to compare): https://borsuczyna.github.io Screenshots: What are requirements? Any gpu with shader model 3.0 can run it (almost any) special thanks Ren712, Einheit-101 Most important - when release? Sadly, I can't tell. There are still many things to do and to make it playable shader, like weather effects, finishing timecyc etc. also important to mention is that project will be open source when finished, anyone can contribute to it or create own fork! If you're interested in development, want to contribute or just want to look at some good pics everyday, join my discord server: https://discord.gg/gY5BZs4Y5Z (ps. please unban me from mta discord)
    6 points
  10. Multi Theft Auto:Source Roleplay By MittellBuurman Roleplay on brand new source_rp resources For over 10 years, a roleplay resource has taught a lot of young aspiring scripters how to move a gate. Your very first challenge. It has been the staple of the roleplay community, where thousands of server have greatly benefited of the capabilities, but also had to face it's limitations. On Jun 11 2022, I started this project. With the ambition to create a new brand new roleplay engine from scratch, with new techniques and features, all wrapped up in a complex database system that is built to last. Gamemode status: Development Expected Launch: tbd We are currently looking for members looking to participate in the dev_sandbox server. We are looking for testers. If you're interested in the build status of the server and like to participate. You can join our Discord here. IMPORTANT NOTE: The server is NOT ready for launch and is in Early development stages. A lot of features may not work as expected and should be reported. This page is still a work in progress and will be aptly updated. Image gallery
    5 points
  11. I love this game because I have spent a majority of my life playing it, and it has provided me with numerous opportunities for personal growth. Through MTA, I have learned about software development and its processes. Therefore, I would like to express my gratitude to all the players and the MTA team.
    5 points
  12. 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.
    5 points
  13. To take away some confusion, understand that the changes being announced here are mostly focussed on cutting out the 'community front' of AC team operations, so that we can optimize limited manpower and rebalance expectations for our users to accept there will be periods we can't make waves, if you were able to move yourself into our perspective on how people always want everything solved, fixed, sorted out immediately on their whim, and how persistent they are in that (and in most cases bring something misconceived/invalid, after which they can't even be convinced otherwise or that would take from our time disproportionally), you'd be straight out scared and quickly stressed out. OP was clarified by adding in this segment 1 day after the topic was made: 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. After all, cheating on MTA will not be left alone, and AC team will disrupt it and raise the border even more whenever manpower allows it to do so. Cheaters should realize that their fun may come to an end at any unexpected moment, and that if they're too used to being able to cheat, they will be very upset to have to adapt to playing normally for as long it takes the cheat devs to catch back up to us again.
    5 points
  14. Hello everyone, I'm incredibly excited to announce some big changes that's come to everyone's favorite World War 2 TDM server! Back when this server first began I remember playing with my friends and having an amazing time - and over the years although Einheit got busy and could not dedicate as much time to server work, the gameplay held up and people continued to have a great time. I eventually extended my offer to help as a moderator or administrator to keep the server clean and ended up contributing in that way until today. As I stated, unfortunately Einheit got busy and was not able to continue giving the project the love and attention - but recently I did some thinking and wanted to do more: Einheit and I - amidst our usual DM conversations - privately came to an agreement for him to sell the server and all related properties to me. Now with this being said, I am very aware of the time, effort, and love he put into this from-scratch project and how much it matters to him. He has been the sole owner and developer on this project since the beginning with only a couple admins and mods to helpfully watch the server from time to time (looking at you @*UndecomingMedic9). I think in order to preserve this server properly and ensure it doesn't end up like many other servers we've seen eventually shut down, It's important for someone with the time, interest, and motivation to take control of it. A bit of background about me - I'm nearly 27 years old and from the US, I joined MTA in 2013 with it being nearly the first online-multiplayer game I've ever played (although I didn't even know the forums existed until two years later haha). I started on freeroam and eventually moved to English roleplay, owning and helping with some servers there while still keeping some enjoyment in freeroam on and off. I'm a huge history guy focusing more around WW1 and WW2 but very much enjoy learning about any past conflicts. I'm currently in the US military doing what I love and aside from that, just trying to live life. So I guess everyone's next question is what's going to happen from here? I'll start with saying nothing in SAAW is going to get worse - It's only going to get better with time. Personally I'm not to best developer on MTA and Einheit was certainly better than me regarding that, but I'm still capable enough to make good things happen with little to no error given the right amount of time. On the player side, the only two things that will change is the IP (which will be attached to this post, announced in our Discord when it's ready, and appended to the original server's name to redirect people in-game) and the fact that development will finally continue. On the development side, in the long scale of things I'm hoping to: Eventually move to MySQL for certain data (while making sure current players don't lose their existing stats/hours/etc) in hopes to move away from the mass amount of element data used Redesign a bit of user interaction such as the login/title screen and potentially some light in-game hud as well Convert several of the maps to utilize the createBuilding function once out of nightly Improve some current features to the best of my ability Address existing bugs and see what can be done to remedy them Create new features given some ideas I've had from players/friends that will fit well in-game More, as time goes on Some final notes: All current staff on the server will remain in their same positions for the time being, but may be replaced if I notice they haven't logged into the new server months after its release. Einheit will remain a permanent staff member The new SAAW will be a server managed under my multi-game community, Monky Gaming Community. Aside from a War Thunder squadron and Minecraft server, this community owns Monky Gaming MTA and San Andreas: A Singleplayer Experience. Our Discord is https://discord.gg/WtRCWSjJuM Interested in helping or have suggestions? Join our Discord and send me a message there or drop suggestions in our suggestions channel Thank you @Einheit-101 for trusting me to keep the project alive and well, and thanks for creating it in the first place If anyone has any questions, comments or concerns please feel free to comment them or send me a message and I will answer to the best of my ability The original SAAW forum post: (To be slightly edited later to encompass this post) A cool feature video made by @Didi:
    4 points
  15. * squints myopically at the screen * * adjusts the spectacles * * pokes the screen with his cane * 20 years? Has it really been 20 years? Holy crap... This thing is older than my son! I don't even know who might recall me from those high rolling days of MTA, but back then, I was [VCA] Loendal... I suppose I still am, in a way. I've also been [RTB]RAW and eventually [NoV]Pops before dropping out of the scene. Perhaps one of those might ring a bell? No? Shotgun, Tec9 and a hockey mask? Heh, those were the days! Happy Birthday to MTA; I haven't played for years at this point, but it's amazing to see this project is still around and kicking. It says up there that there are currently 19,000 people playing.. Those are numbers even long running MMO's can't hold a candle to. Congratulations, and a toast to your continued success! I also offer this as both a proof of who I am, and also a glimpse into the world of MTA back in the beginning... I think this was MTA .3 or something like that.. Yes, the music may be crap to most ears, but it was 16 years ago, dammit! ;)
    4 points
  16. 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.
    4 points
  17. 1. We create an application in https://discord.com/developers/applications 2. We copy the application id: 3. Now we are making the script (start with creating a .lua file) --// discord_c.lua local app_id = "your_app_key_here" function ConnectRPC() setDiscordApplicationID(app_id) if isDiscordRichPresenceConnected() then local name = getPlayerName(localPlayer) iprint("RPC: Discord RPC is now connected") setDiscordRichPresenceAsset("your_app_logo_string", "Yey, this is my app logo") setDiscordRichPresenceButton(1, "Join Discord", "url_here") setDiscordRichPresenceButton(2, "Connect Server", "url_here") --// NOTE: you can show only 2 buttons setDiscordRichPresenceState("Playing") setDiscordRichPresenceDetails("Playing as: "..name) else iprint("RPC: Discord RPC failed to connect") end end addEventHandler("onClientResourceStart", resourceRoot, ConnectRPC) --// Now, we reset the rpc details so the status will not be bugged addEventHandler("onClientResourceStop", resourceRoot, function() resetDiscordRichPresenceData() end) 4. So, we have our discord_c.lua file and now we need to create the meta.xml <meta> <info author="YourName" description="YourResourceDescription" type="YourScriptType", version="1.0" /> <script src="discord_c.lua" type="client" cache="false" /> </meta> 5. In the console you can now type refresh and after start theResourceName
    4 points
  18. Hey everyone! I am not sure if this is the right topic for this content, but i want to share my work here aswell. (Posted it on discord about a week ago) So I'm developing an isometric action MMORPG within MTA. To start, it's a multilanguage project that's already been translated into six different languages. There are currently three unique classes, each with thousands of different talents and build variations. There are already a lot of unique monsters and bosses, but still a lot to go. It's going to take time to complete, especially since this project is still in its early stages, as you can see in the trailer video, however, I am willing to put the work in. If you are interested, feel free to watch the trailer video below: Trailer video on youtube.
    4 points
  19. Hello my name is : Shady,I will show you some examples and tutorials that can be done with the math method. Lua provides a set of built-in math functions that can be used to perform various mathematical operations. Here are some of the most commonly used functions: math.abs(x) This function returns the absolute value of a given number x. Example cd: local x = -10 local abs_x = math.abs(x) -- abs_x is 10 math.ceil(x) This function rounds up a given number x to the nearest integer. Example cd: local x = 3.5 local ceil_x = math.ceil(x) -- ceil_x is 4 math.floor(x) This function rounds down a given number x to the nearest integer. Example cd: local x = 3.5 local floor_x = math.floor(x) -- floor_x is 3 math.max(x1, x2, ...) This function returns the maximum value among the given numbers. Example cd: local max_value = math.max(10, 20, 30) -- max_value is 30 math.min(x1,x2, ...) This function returns the minimum value among the given numbers. Example cd: local min_value = math.min(10, 20, 30) -- min_value is 10 math.random([m [, n]]) This function returns a random number between m and n. If m and n are not provided, it returns a random number between 0 and 1. Example cd: local random_value = math.random(1, 100) -- random_value is a random number between 1 and 100 math.sqrt(x) This function returns the square root of a given number x. Example cd: local x = 16 local sqrt_x = math.sqrt(x) -- sqrt_x is 4 In Lua, math.huge is a special value that represents positive infinity. It is often used in mathematical calculations where a number needs to be compared or used as a placeholder for a very large number. For example, let's say you want to find the maximum value in an array of numbers. You could start by initializing a variable max to -math.huge, which is the smallest possible number in Lua. Then you could loop through the array and compare each element to max, updating max if the element is larger. By starting with -math.huge, you can be sure that the first element in the array will always be larger than max, allowing you to update max with the first element. Here's an example code snippet that demonstrates the use of math.huge: local numbers = {5, 10, 2, 7, 15} local max = -math.huge for _, number in ipairs(numbers) do if number > max then max = number end end print("The maximum value is:", max) In this code, we start by defining an array of numbers. Then we initialize max to -math.huge before looping through the array using ipairs. For each number in the array, we check if it is greater than the current value of max. If it is, we update max with the new value. Finally, we print out the maximum value. Here are some examples of how these functions can be used in MTA scripts: Example 1: Calculating the distance between two points. getDistanceBetweenPoints2D function getDistanceBetweenPoints2D(x1, y1, x2, y2) local dx = x2 - x1 local dy = y2 - y1 return math.sqrt(dx*dx + dy*dy) end local distance = getDistanceBetweenPoints2D(10, 20, 30, 40) -- distance is the distance between the two points (10,20) and (30,40) Example 2: Generating a random number outputChatBox local random_value = math.random(1, 100) outputChatBox("The random number is: " .. random_value) Here I will show you 5 script sample codes with MTA Lua math function. In this direction, you can find some methods and information on how to create scripts with the math function. 1-) Generating Random Colors: string-methods function generateRandomColor() -- Generate random numbers from 0 to 255 local r = math.random(0, 255) local g = math.random(0, 255) local b = math.random(0, 255) -- return color code return string.format("#%02X%02X%02X", r, g, b) end 2-) Calculating the Distance Between Players: getElementPosition getDistanceBetweenPoints3D function getPlayerDistance(player1, player2) -- get the positions of the players local x1, y1, z1 = getElementPosition(player1) local x2, y2, z2 = getElementPosition(player2) -- calculate the distance local distance = getDistanceBetweenPoints3D(x1, y1, z1, x2, y2, z2) -- return the distance return distance end 3-) Calculating Vehicle Speed: getElementVelocity function getVehicleSpeed(vehicle) -- get the speed of the vehicle local speedX, speedY, speedZ = getElementVelocity(vehicle) -- Calculate the magnitude of the velocity vector local speed = math.sqrt(speedX^2 + speedY^2 + speedZ^2) -- return speed return speed end 4-) Showing Player's Health in Percentage: getElementHealth function getPlayerHealthPercentage(player) -- get player's health value local health = getElementHealth(player) -- Calculate percentage of health value local healthPercent = math.floor((health / 100) * 100) -- return health percentage return healthPercent end 5-) Calculating the Two-Dimensional Distance of Players: getElementPosition function getPlayer2DDistance(player1, player2) -- get the positions of the players local x1, y1, _ = getElementPosition(player1) local x2, y2, _ = getElementPosition(player2) -- calculate the distance local distance = math.sqrt((x2 - x1)^2 + (y2 - y1)^2) -- return the distance return distance end As you can see, here are 5 script examples with the MTA Lua math function
    4 points
  20. I disagree. I needed to understand matrices, figuring out how they work (examples in getElementMatrix wiki page were an important part of that) was one of my major achievements because it enabled me to do calculations in 3D that I hadn't been able to before then. It's up to each person to decide if they need it or not. It was definitely not a waste of time for me so I wouldn't make such strong assumptions. As you have noticed, the 4th table represents the position. As for the others - they represent rotation and scale. More specifically, the 3x3 part of the matrix (that is, from matrix[1][1] to matrix[3][3]) is what you would call a "rotation matrix", which tells the directions of the object's coordinate system with respect to the world's coordinate system. matrix[1] tells where the object's X direction is pointing to, matrix[2] tells Y and matrix[3] tells Z. This allows you to do transformation of points from one coordinate system to another, using addition/subtraction and multiplication operations. For example, if you want to calculate the absolute coordinates of a point that's 0.5 units to the right (X) and 2 units to the front (Y) from the car, the calculations would go like this: absolute_position = 0.5*car_x_direction + 2*car_y_direction + car_position Or, by including the Z direction for completeness, we can also express it like this: absolute_position = 0.5*car_x_direction + 2*car_y_direction + 0*car_z_direction + car_position Basically the relative coordinates are (0.5, 2, 0), and by multiplying each component by vector of respective direction of the car and putting them together, you get the offset from the car in world's coordinate system, then by adding the car's position you get the absolute position. Written in plain Lua, with calculations done separately on each component, it would look like this: local absolute_position = { 0.5*matrix[1][1] + 2*matrix[2][1] + 0*matrix[3][1] + matrix[4][1], 0.5*matrix[1][2] + 2*matrix[2][2] + 0*matrix[3][2] + matrix[4][2], 0.5*matrix[1][3] + 2*matrix[2][3] + 0*matrix[3][3] + matrix[4][3] } That's the kind of calculation that happens inside matrix:transformPosition when using MTA's Matrix and Vector3 classes. It's up to you which one you use. Using MTA's classes helps you keep your code concise, while doing the calculations yourself allows you to reuse the math code anywhere else you use Lua, not just in MTA. As for your specific case - getElementBoundingBox returns the bounds relative to the element. So you can use them to choose a point in car's coordinate system and then transform it using the matrix. To elaborate a bit more regarding the matrix values in your example - notice how, if we round the small values to zero (they are non-zero because of some numerical inaccuracies to begin with), the 3x3 part looks like this: matrix[1] = {1, 0, 0} -- X axis (the right side), matches the world's X direction (east) matrix[2] = {0, 1, 0} -- Y axis (the front), matches the world's Y direction (north) matrix[3] = {0, 0, 1} -- Z axis (the top), matches the world's Z direction (top) Which demonstrates that since your car is not rotated, each of your car's X, Y and Z direction points to the respective direction in the world's coordinates. If you rotated the car clockwise by 90 degrees, the values would be different: matrix[1] = {0, -1, 0} -- X axis (the right side), matches the world's -Y direction (south) matrix[2] = {1, 0, 0} -- Y axis (the front), matches the world's X direction (east) matrix[3] = {0, 0, 1} -- Z axis (the top), matches the world's Z direction (top) I hope this explanation helps you in case you want to understand better how matrices work. And if you don't care what happens under the hood, then it's okay too, you can just use Matrix and Vector3 classes with transformPosition method.
    4 points
  21. @MGO_SA @Magiz0r @Reda_Iq @CarCrasher @Woffi1221 @Lt.Price @MoHaRx @Marinovv @DreaM40BG I pushed a small update to Cinema Experience (version 2.3) on March 20th, 2024. This is mostly a release to fix some long standing issues. The changes include: Fixed video playback issues with auto click through and ad skipping Improved screen resolution from 360p to 1080p Smoothed ambilight color transitions Unlocked Audio Toggle and Change View settings Added screen aspect ratio adjustment in settings Added YouTube Shorts support (.com browser only) Minor UI and texture updates Fixed hud compatibility issue Fixed some multiplayer sync issues A couple of new features added as well: onscreen video start messages, and the ability to Change View to look directly at the screen. I also cleaned up some unused settings and code. Note that if YouTube TV acts up, you can try enabling the embed video fallback by setting useEmbeds=true in shared.lua. This may cause some videos to error out though due to an embedding issue which is unfixable. You can download the updated version here. Let me know if you run into any other issues. Enjoy!
    3 points
  22. Currently, you can find Milestones on GitHub that track the intended updates for the next MTA release, as well as other issues for future releases (backlog).https://github.com/multitheftauto/mtasa-blue/milestones There are also several project boards on GitHub that track the progress of certain topics like Framerate fixes. https://github.com/multitheftauto/mtasa-blue/projects?type=classic I feel like these methods of showing the goals for the platform are limited. The milestones are just plain lists of GitHub issues and pull requests, with no categorization other than basic labels (ie. enhancement or bug). I believe that Multi Theft Auto should have a central development roadmap, like any major work-in-progress project, that lists the general goals for the platform and its services: we are talking not only about MTA:SA-Blue (the GTA:SA multiplayer mod), but also about its web services (like community.multitheftauto.com that should be modernized), and other plans. It is not a small project. It seems crucial that the objectives are organized in categories, and also sorted by priority that is according to the MTA Staff, Contributors and the community's general interest, as well as how everything spans across time. Why not create a Wiki page, a forum thread or a dedicated web page for this purpose? MTA still has a lot of improvements to make, and this would be a step towards more transparency and coherence. Everyone would appreciate having easy access to such information on the development process & plans. I often see people criticize MTA Staff for their lack of communication on the development of the main MP mod. PS. I know this Roadmap wiki page exists, but it pointed to a Roadmap on the old Bug Mantis, which essentially just became the GitHub milestones we have today. I believe something more detailed is necessary, like described above. Opinions?
    3 points
  23. 3 points
  24. Hello there, Today I am presentin you with my latest Old School map named "Fontaine." The unique atmosphere and storyline of this region has inspired me from the GI. I had initially promised to create a "Griddle of the Sands" map which is the second desert area in Sumeru, but Fontaine's vibes and atmosphere were too tempting for me to resist. Therefore, I decided to create it first before focusing on other regions such as "Griddle of the Sands", "Mondstadt", "Liyue", and "Dragonspine." Fontaine is the home nation of the Hydro Vision, and where justice reigns supreme. The punishing machine named "Oratrice" here hold zero tolerance for error. There is no mercy for those who defy the rules or do wrong in this region. Also, people have transformed their large opera house "Opera Epiclese" into a court, so that performances and trials can occur simultaneously. It's common to see those who are being punished act like they are part of a play. The crowds are free to watch like they're watching a show, just as they would watch a performance they paid for. It seems that the justice system here is one of entertainment rather than fairness. Enjoy the video! The map contains some mechanisms from the game; Water Bridges This structure you see is a kind of creation developed by Fontaine engineers that allows boats to pass over it. In this map, you'll get to experience this structure first-hand and witness its capabilities. The Diving The waters here are nothing to fear. In this map, you are free to dive into the depths and explore the wonderful underwater world. Keep your course and enjoy the refreshing atmosphere of the waters. During your journey, you will enter and exit the waters multiple times. So get used to it already. But that doesn't mean you can stay underwater for long periods of time hehe) Floating Hydro Cubes The Fontaine Research Institute of Kinetic Energy Engineering, often shortened to Fontaine Research Institute, is an organization in Fontaine. During your journey, you'll have to achieve this weird scenery. The pressure inside is quite density so you'll feel it yourself when you get in. Underwater life The underwater life here has covered the area with diverse and vibrant species and forms of life, including mosses-covered structures, underwater grasses, and a plethora of aquatic animals. Natlan? You may notice the volcanic build in the end of the map; which references the next map will be about Natlan but I am not following any kind of time period so, I may bring different maps before this region like as, Desert of Hadramaveth as I was promised in my previous map "Mausoleum of King Deshret" But I've added it in the end of the map because it will be the next upcoming region after the Fontaine in GI. Natlan is one of the seven regions of Teyvat and is renowned for its worship of Murata, the Pyro Archon and the Archon of War. The region is slated to be released in Version 5.0 and will bring with it an array of vibrant volcanic events, although we haven't seen much of it as of yet since it has not been released yet and remains a mystery. However, when that day finally arrives, we can be certain that exploration in such a unique region will bear unique rewards. And I'll make sure to create a new Old School map based on this region, which will serve as a continuation of my 'GI-Regions' series. The map is synchronized with the music, and scripts as in the Mausoleum of King Deshret, Sumeru and Inazuma from my previous maps. You will feel the harmony if you can play the map without fail. (The screen will shake, atmosphere will change etc.) Credits Video & Edit by VonKasty Detailed credits can be found in the video's description. You may subscribe to Nakvie's YouTube channel as the owner of the Channel) Beta Tester Now, for my upcoming map conversions, I wish to extend my gratitude to Shady & VonKasty for serving as the initial testers. You're both very insightful and have been exceptionally helpful throughout the map-making process. And to all you out there who wish to participate in the beta-testing phase of my upcoming old school projects, feel free to send me a direct message, and I'll be more than just happy to have you onboard as well! Something more to add: FDD Maps Update As for the lovers of FDD, I wish to announce that in the foreseeable future, I'll begin the process of converting my GI-Region-Series maps to the FDD gamemode. This specific series will include aspects of several regions, one such as Fontaine, Sumeru, and Inazuma. From the different point of view, those regions will their own areas as in the GI. For example Inazuma: The Grand Narukami Shrine, Inazuma: The Watatsumi Island, Inazuma: Seirai Island. Fontaine: Poisson, Fontaine: Merusea Village. Sumeru: Port Ormos, Sumeru: Ruins of Dahri, Sumeru: Chatrakham Cave, Sumeru: Vanarana, Sumeru: Mausoleum of King Deshret Now, in regards to my FDD conversions, I've set a condition for myself to only complete the ones that have already been released. In other words, Fontaine, Sumeru & Inazuma are already released, so I'll create FDD maps based around those regions. However, when it comes to regions that have yet to be released, such as Natlan, Liyue, Mondstadt, the likelihood of FDD variants not yet coming into fruition remains high. If everything goes smoothly, Antartica 3 is on the way & Deep N Deeper series will continue too.
    3 points
  25. Winter Hello, as winter is approaching, I thought I would share one of my scripts. This script replaces the textures of summer in San Andreas with snow textures. The script is very lightweight because, instead of using .txd files, I used images. In San Andreas, there are many duplicated textures that are equal, but with different file names. To address this, I hashed every image in the game and deleted the duplicates. As a result, the images only occupy 142MB instead of gigabytes. Download: https://github.com/paksisoma/mta-winter
    3 points
  26. mta-add-models is a library/framework resource that I made: Its purpose is allowing you to add new peds(skins)/objects/vehicles to your server. All the new added models will be automatically synced with all players. Supports encrypted mod files using the NandoCrypt system. As of v2.0.0, files with attribute download="false" in meta.xml are supported, and newmodels will handle downloading them! The way to achieve this is by following the tutorial included in the project's documentation (see GitHub link below) The resource comes with test commands for you to experiment with the mods provided and see what's going on under the hood. You're meant to make your own implementations to use newmodels in your server's complex systems. GitHub Repo (Download): https://github.com/Fernando-A-Rocha/mta-add-models#readme (Documentation here) Community Page (Download): https://community.multitheftauto.com/index.php?p=resources&s=details&id=18598 (will try to update often) (NEW) Custom Map Editor: https://github.com/Fernando-A-Rocha/mta-add-models/blob/main/.github/docs/custom_editor/README.md For support/questions please access my main thread: https://forum.multitheftauto.com/topic/139644-rel-nandos-resources/ I hope you enjoy!
    3 points
  27. Variety of roleplay scenes from different roleplayers on our server. UCP: https://ardicgaming.com/ Forums: https://forums.ardicgaming.com/ Community Rules: https://wiki.ardicgaming.com/ Discord: https://ardicgaming.com/discord/ Server IP: mtasa://164.132.200.104:22003 See you out there!
    3 points
  28. Happy new year! Here are some screenshots from my gallery: TGB Jukebox @Zango in the restroom: TO SHO!!!
    3 points
  29. # Project:V Project:V is a server based on the game mode from GTA:V Online. We are trying to bring every feature from GTA:V to this server to create something unique and long lasting. The server is still in progress but quite a lot of progress has been made, I won't post every update here and I'll let you go to our discord server to see what the server looks like at the moment Some screens: https://streamable.com/ghma0r https://streamable.com/vdffx6 Discord: https://discord.gg/XcPJeahDQE
    3 points
  30. Você pode desativar os sons específicos do tiro dela quando você equipar o slot dela. addEventHandler("onClientPlayerWeaponSwitch", localPlayer, function(prevSlot, curSlot) if getPedWeapon(localPlayer, curSlot) == 31 then -- Se o jogador está com a arma M4, então: setWorldSoundEnabled (5, 3, false) setWorldSoundEnabled (5, 4, false) setWorldSoundEnabled (5, 5, false) -- Desativa os sons da M4 (e também da AK-47). setWorldSoundEnabled (5, 33, false) setWorldSoundEnabled (5, 53, false) else -- Se não estiver com a M4, então: setWorldSoundEnabled (5, 0, true) setWorldSoundEnabled (5, 1, true) setWorldSoundEnabled (5, 2, true) setWorldSoundEnabled (5, 3, true) -- Habilita novamente todos os sons das armas. (se ele estiver com a AK-47, habilita os sons) setWorldSoundEnabled (5, 4, true) setWorldSoundEnabled (5, 5, true) setWorldSoundEnabled (5, 6, true) setWorldSoundEnabled (5, 7, true) setWorldSoundEnabled (5, 8, true) setWorldSoundEnabled (5, 11, true) setWorldSoundEnabled (5, 12, true) setWorldSoundEnabled (5, 13, true) setWorldSoundEnabled (5, 14, true) setWorldSoundEnabled (5, 15, true) setWorldSoundEnabled (5, 16, true) setWorldSoundEnabled (5, 17, true) setWorldSoundEnabled (5, 18, true) setWorldSoundEnabled (5, 21, true) setWorldSoundEnabled (5, 22, true) setWorldSoundEnabled (5, 23, true) setWorldSoundEnabled (5, 24, true) setWorldSoundEnabled (5, 26, true) setWorldSoundEnabled (5, 27, true) setWorldSoundEnabled (5, 29, true) setWorldSoundEnabled (5, 30, true) setWorldSoundEnabled (5, 32, true) setWorldSoundEnabled (5, 33, true) setWorldSoundEnabled (5, 53, true) setWorldSoundEnabled (5, 63, true) setWorldSoundEnabled (5, 72, true) setWorldSoundEnabled (5, 73, true) setWorldSoundEnabled (5, 74, true) setWorldSoundEnabled (5, 76, true) setWorldSoundEnabled (5, 77, true) end end) -- Também daria pra fazer utilizando tabela em vez de um monte de if/elseif mas deixei assim para facilitar. Obs: Outras armas usam outros sons diferentes da M4. Você precisa descobrir quais são para desativar somente os sons corretos. Obs2: Você também deixará de ouvir os sons das armas dos outros jogadores caso elas usem os mesmos sons que você desativou. (se vc estiver com a M4 e outro jogador estiver com a AK-47) Obs3: Se você estiver com uma AK-47 (sons ativados) na mão e pegar uma M4. Os sons permanecerão ativados pois o slot não foi alterado e portanto essa função não foi chamada. O inverso acontece também. Se você estiver com uma M4 na mão (sons desativados) e pegar uma AK-47, ela também continuará com os sons desativados. O som será corrigido ao trocar de slot de arma. Obs4: Não está incluso nesse exemplo os sons de recarga das armas.
    3 points
  31. Lua tables are a fundamental data structure that allows you to store key-value pairs and create complex data structures. Tables in Lua are versatile and can contain values of different types. Let's dive into a detailed explanation with examples : Table Creation: To create a table in Lua, you use curly braces { } and separate the elements with commas. Here's an example: local table = {1, 2, 3, 4, 5} -- table crt In the above example, we created a table named table and populated it with values 1, 2, 3, 4, and 5. Accessing Table Elements: You can access table elements by using square brackets [ ]. Indices in Lua start from 1. Here's an example: -- Accessing table elements print(table[1]) --output : 1 print(table[3]) --output : 3 In the above example, we access the value at the 1st index (1) and the 3rd index (3) of the table. Adding Elements to a Table: To add a new element to a table, you specify the index and the value. If the specified index already exists in the table, the value will be overwritten. Here's an example: -- Removing elements from a table table[3] = nil In the above example, we remove the element at the 3rd index of the table. Getting the Size of a Table: To get the size of a table (i.e., the number of elements), you can use the # operator. Here's an example: -- Getting the size of a table print(#table) -- 5 In the above example, we print the size of the table using the # operator. Table Iteration: You can iterate over the elements in a table using the ipairs or pairs functions. ipairs provides index-based iteration, while pairs provides key-based iteration. Here's an example: -- Table iteration for index, value in ipairs(table) do print(index, value) end In the above example, we iterate over the table using ipairs and print the index and value of each element. +---------------------------------------------------+ | Game Settings | +---------------------------------------------------+ | Difficulty: | Hard | | Sound Volume: | 80% | | Controls: | Keyboard & Mouse | | Graphics Quality: | High | +---------------------------------------------------+ In the above example, an ASCII art representation is used to display a Lua table representing game settings. The table consists of different elements representing various game settings. Here's the Lua code that represents the table: local gameSettings = { difficulty = "Hard", soundVolume = "80%", controls = "Keyboard & Mouse", graphicsQuality = "High" } In the Lua code, a table named "gameSettings" is created, and different elements representing game settings such as difficulty, sound volume, controls, and graphics quality are added to the table. local person = { name = "Eren", age = 20, occupation = "Software Engineer", country = "Germany" } local tableFormat = [[ +-----------------------+ | Person Info | +-----------------------+ | Name: %s | | Age: %d | | Occupation: %s | | Country: %s | +-----------------------+ ]] local formattedTable = string.format(tableFormat, person.name, person.age, person.occupation, person.country) print(formattedTable) In the example above, we create a Lua table named "person" and populate it with some sample information about a person. We then define a string format named "tableFormat" which represents an ASCII table structure. We use placeholders like %s and %d to indicate the places where the values from the "person" table will be inserted. Finally, we use the string.format function to fill in the format with the data from the "person" table and store it in the variable "formattedTable". We print the "formattedTable" to display the final result. I explained string methods in the previous tutorial, here is the link: string methods LINK Output : +-----------------------+ | Person Info | +-----------------------+ | Name: Eren | | Age: 20 | | Occupation: Software Engineer | | Country: Germany | +-----------------------+ Nested Tables: Tables can contain other tables, allowing you to create nested or multidimensional data structures. Here's an example: -- Nested tables local team = { name = "Team A", players = { { name = "Eren", age = 20 }, { name = "Emily", age = 27 }, { name = "Angela", age = 23 } } } print(team.name) -- Team A print(team.players[2].name) -- Emily In the above example, we created a table named team with two elements: name and players. The players element is a nested table that contains information about individual players. We access the name element of the team table and the name of the player at the 2nd index of the players table. Table Insertion and Removal: Lua provides various functions for inserting and removing elements from tables. Here's an example that demonstrates these operations: -- Table insertion and removal local fruits = {"apple", "banana"} table.insert(fruits, "orange") -- Insert an element at the end table.insert(fruits, 2, "grape") -- Insert an element at the 2nd index table.remove(fruits, 1) -- Remove the element at the 1st index for index, fruit in ipairs(fruits) do print(index, fruit) end In the above example, we start with a table named fruits containing two elements. Using table.insert, we add an element at the end and another element at the 2nd index. Then, using table.remove, we remove the element at the 1st index. Finally, we iterate over the modified fruits table and print the index and value of each element. Table Concatenation: Lua allows you to concatenate tables using the .. operator. Here's an example: -- Table concatenation local table1 = {1, 2, 3} local table2 = {4, 5, 6} local mergedTable = {} for _, value in ipairs(table1) do table.insert(mergedTable, value) end for _, value in ipairs(table2) do table.insert(mergedTable, value) end for index, value in ipairs(mergedTable) do print(index, value) end In the above example, we have two tables named table1 and table2. We create an empty table named mergedTable and use table.insert to concatenate the elements from table1 and table2 into mergedTable. Finally, we iterate over mergedTable and print the index and value of each element. for MTA:SA Player Information: Lua tables can be used to store player information in MTA:SA. Below is an example of a player table that contains details such as the player's name, level, and score: local player = { name = "Eren", level = 5, score = 1000 } In the above example, we create a table named "player" and populate it with the player's name, level, and score. Vehicle List: Lua tables can be utilized to store data related to vehicles in MTA:SA. Here's an example of a vehicle table that includes the model names and colors of the vehicles: local vehicles = { { model = "Infernus", color = {255, 0, 0} }, { model = "Bullet", color = {0, 0, 255} }, { model = "Sultan", color = {0, 255, 0} } } In the above example, we create a table named "vehicles" and store each vehicle as a separate table with its model name and color data. Colors are represented using RGB values. NPC (Non-Player Character) List: Lua tables can be used to store in-game NPCs in MTA:SA. Here's an example of an NPC list table that includes the model IDs and coordinates of the NPCs: local npcs = { { model = 23, x = 100, y = 200, z = 10 }, { model = 56, x = 150, y = 250, z = 15 }, { model = 89, x = 200, y = 300, z = 20 } } In the above example, we create a table named "npcs" and store each NPC as a separate table with their model ID and coordinates. I hope you will like it
    3 points
  32. E aí, @wesssley — como é que você tá? Existe sim uma maneira de você fazer isso, através das funções de criptografia base64Encode, base64Decode, encodeString e decodeString. Deixarei abaixo um código que escrevi e você pode estudar mais como funcionaria. De qualquer forma, explicarei como usar: 1. Adicione o resource no seu servidor local. Sim, eu recomendo que use um servidor local, uma vez que o resource irá fazer um processamento pesado, podendo até causar perda de performance. 2. Vá até a pasta shared e abra o arquivo settings.lua. Edite as seguintes variáveis: KEY — use uma senha bem forte, você pode gerar em algum site. (exemplo: https://my.norton.com/extspa/passwordmanager?path=pwd-gen) OUTPUT_PATH — matenha dessa forma. 3. Adicione os arquivos sem criptografia na pasta assets e também adicione-os no meta.xml. 4. Inicie o resource no seu servidor, com o comando /start encrypt-assets. Você pode acompanhar a compilação no console do seu servidor, aquele terminal fora do MTA. 5. Uma vez finalizado, os arquivos criptografados estarão na pasta assets/output. Vá até o meta.xml e altere onde os arquivos criptografados estão, que é na pasta citada anteriormente, neste passo. Além disso, atente-se ao nome do arquivo, a extensão deles mudou para .dff_encrypted ou .txd_encrypted. Deseja mover esses arquivos para outro resource? Você pode mover, desde que o client/loader.lua esteja lá, configurado da maneira correta. Anexo: https://drive.google.com/file/d/1aOkqqLCj6wAq64kwzS7IfYuredrFAf_Z/view?usp=sharing Observação: por mais que eu tenha enviado o resource pronto para uso, peço que estude como ele funciona.
    3 points
  33. Best mta server i ever seen just needs some more players
    3 points
  34. ^ The above post is because again, we know you're spreading false stories about MTA (AC team/me) and the TOP-GTA DayZ server owner samr46, besides that you have a lot of friends you're spreading it to as well, who may believe you on your word. This is the debunk, information to fight your disinformation, everyone should know you're a ** cheater. No one likes cheaters, and no, you will never play MTA again. Have a good evening!
    3 points
  35. 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.
    3 points
  36. وظيفة triggerLatentClientEvent الكثير منا يتجاهلها ويستخدم triggerClientEvent والفرق اللي بينهم ان triggerClientEvent اسرع في النقل لانها بتحمل الداتا كلها مرة واحدة ولكن triggerLatentClientEvent تاخد وقت ااكثر بقليل جدا من التريقر العادي للنقل 15% CPU ولكن لما تستخدم التريقر العادي هيسحب من ال CPU ولكن بالتريقر ليتينت ما راح يسحب شئ من ال لذالك انصح باستخدام triggerLatentClientEvent بالتوفيق
    3 points
  37. This reply is actually beautiful and could quite easily be it's own little thread, you have explained it much better than I ever could have there and showed the right way to achieve things like this. One of the biggest headaches I faced as a new coder many years ago was super duper nesting myself and creating messes.
    2 points
  38. Im giving you simple ESP protection from cheaters. This may be useful for some DM servers. There are some things you need to know: 1) WORKS ONLY FOR PLAYERS (IT MAY NOT WORKING FOR PLAYERS THAT ARE IN VEHICLE) 2) There are some bugs with transparent textures. 3) You can optimize it by creating 2 tables: Players < 300m and Players > 300m. These tables will be updated in x time. DOWNLOAD: https://github.com/Korea77/mta-esp-protection
    2 points
  39. Opa, e aí @Clebson — como é que vai? Essa função foi removida do painel admin por motivos de segurança. Agora você deve usar o resource runcode para executar comandos e/ou códigos. Ele é bem simples. Primeiramente, você deve iniciar o resource, com o comando /start runcode. Uma vez iniciado, você tem os seguintes comandos: srun - executa server-side. crun - executa client-side. Exemplos de uso: srun createVehicle(411, getElementPosition(getPlayerFromName("seu_nickname"))) | O comando, assim que executado, irá criar um veículo no lado server, ou seja, para todos. crun setSkyGradient(255, 255, 255, 0, 255, 0) | O comando, assim que executado, irá mudar a cor do céu somente para você, ou seja, client-side, quem executou o comando. ATENÇÃO! Esse resource, por motivos de segurança, deve permanecer DESLIGADO em um servidor on-line, público.
    2 points
  40. Hello, I am selling my chatbox resource from a project I was working on Preview: Description: Supports client/server side commands Outputs default messages (player muted, player banned, etc..) Press T to talk with all players Press Y to talk with your team Smooth fade in when a message is typed Supports admin tags Contact & Info: Price: 15-20 euro, only paypal Contact: Gabriel45#6859 (Dirscord)
    2 points
  41. Meama, nush cum am ajuns iar aici dupa 7 ani de cand n-am mai jucat si dupa 11 ani de cand m-am jucat prima oara. Ma mir ca inca merge MTA-ul in Romania, si ma bucur intr-un fel. Am venit doar sa va salut, si pentru OG-ii vechi care ma mai tin minte, "cum mai e viata? Axel mai traieste? mai bantuie pe aici? =)))"
    2 points
  42. Your start angle is -270. The stop angle is: When the health is 100: (100 * 6.3 / 2 - 90) = 225 When the health is 0: (0 * 6.3 / 2 - 90) = -90 So the stop angle is always larger than the start angle, making the arc always visible. You need to choose such numbers that the stop angle would match the start angle when the health is 0.
    2 points
  43. The world objects aren't MTA elements so you don't have the same level of control over them that you have over objects that you add. What you can do is removing the original objects with removeWorldModel and adding your own identical ones.
    2 points
  44. Salutări tuturor! Recent a fost lansată versiunea 1.6 (beta) pentru platforma Multi Theft Auto! Aceasta aduce schimbări substanțiale, unele incompatibile cu versiunile anterioare, motiv pentru care a fost luată decizia de a lansa noua versiune într-un stadiu beta. Vă invităm să luați parte la demersurile de testare a noii versiuni pentru a accelera această perioadă beta (estimată să dureze până în jurul lunii mai-iunie dacă toate condițiile necesare sunt întrunite). Cum puteți ajuta? Cel mai simplu și eficient mod este conectarea pe unul dintre serverele publice deschise provizoriu de către echipa MTA cu scopul de a facilita testarea noilor funcționalități. Puteți descărca și instala cea mai recentă versiune de MTA aici: https://nightly.multitheftauto.com/?mtasa-1.6-latest Puteți găsi detaliile de conectare pentru fiecare server în parte aici: MTA 1.6 Official Beta Server #1 Europe - IP: 57.129.0.210:22003 MTA 1.6 Official Beta Server #2 America - IP: 51.222.139.212:22003 Puteți avea două versiuni de MTA instalate simultan (versiunea anterioară 1.5.9 și versiunea nouă 1.6-beta), fiecare versiune instalată într-un folder diferit! În acest fel, puteți comuta cu ușurință în orice moment între versiuni fără să fie necesară o reinstalare sau modificare a fișierelor. Puteți citi mai multe în acest anunț: Distracție plăcută!
    2 points
  45. You can't "create" new dimensions. But the element limit is 2^16 = 65536. And there are also 65536 dimensions - just enough to store each element into its own separate dimension. This allows you to create your own dimension system, based on the built-in one. In fact, I tried something like that a long time ago. A dimension system that used arbitrary values as dimension IDs, with each value being assigned a unique integer from 0 to 65535. You can use tables to track things like which elements each dimension contains and which custom dimension system ID corresponds to which built-in dimension system ID.
    2 points
  46. eagleLoader Custom map loader for MTA:SA Allows for custom maps to be imported in MTA:SA Loads new models alongside the default SA models Quickly and efficiently loads maps If configured right draw distance comparable to the default map Github (Download & Documentation) Eagle Inc Discord (Support & Community) Newer supported relative to MTA-Stream / J-Stream Support : Join our discord Comment on in Feedback on github Official maps using this system : Vice City Liberty City
    2 points
  47. New update out, adds proper .map based LOD support and basic ide definition flag support. You can test it using the latest branch of VC https://github.com/BlueEagle12/MTA-Vice-City/tree/Fresh-Conversion-With-LODs
    2 points
  48. The proper way in Lua to use arguments in a function created using loadstring is vararg expression, written as three dots. local argument1, argument2, argument3 = ... In your case, the function body would look like this: local player = ... return getPlayerName(player) == 'owner' An example with loadstring: local func_str = "local player = ... return getPlayerName(player) == 'owner'" local loadstringed = loadstring(func_str) local testPlayer = getPlayerFromName("player1") local success, info = pcall(loadstringed, testPlayer)
    2 points
  49. السلام عليكم ورحمه الله وبركاتة امس في القسم الاجنبي عضو سال ازاي يجيب اقرب بيد بالنسبة لنقطة عطيتو الفنكشن بس حبيت اطوروا اكثر getNearsetElmFromXYZ الفنكشن عبارة عن يجيبلك اقرب اليمنت بالنسبة لنقطة معينة ( الساينتكس / syntax ) : function getNearsetElmFromXYZ( etype , x , y , z ) etype : نوع الاليمنت x , y , z : احداثيات النقطة ( السورس كود / Source Code ) : function getNearsetElmFromXYZ( etype , x , y , z ) local elements , positions , element = getElementsByType( etype ) , { } , { } if( ( not elements ) or ( #elements == 0 ) ) then return false end for index = 1 , #elements do positions[ index ] = getDistanceBetweenPoints3D( x , y , z , getElementPosition( elements[ index ] ) ); element[ positions[ index ] ] = elements[ index ]; end return element[ math.min( unpack( positions ) ) ]; end ودا مثال يجيب معلومات اقرب سيارة بالنسبة لمكان الاعب addCommandHandler( "getNearsetVeh" , function( plr ) local nearstVehicle = getNearsetElmFromXYZ( "vehicle" , getElementPosition( plr ) ); if( not nearstVehicle ) then return outputChatBox( "There\'s not vehicles" ); end outputChatBox( "Name : " .. getVehicleName( nearstVehicle ) ); outputChatBox( "Model : " .. getElementModel( nearstVehicle ) ); end ) @Master_MTA --> معلش علي اللون الاخضر ما اقدر اقاوم لوول
    2 points
×
×
  • Create New...